2010-06-25 19 views
112

Also, ich habe eine SVG-Datei in HTML, und eines der Dinge, die ich über das Format gehört habe, ist, dass es nicht alle pixeliert, wenn Sie es vergrößern.Ändern der Größe von SVG in HTML?

Ich weiß, mit einem JPEG oder was auch immer ich könnte es als 50 von 50 Symbol gespeichert haben, dann tatsächlich als ein (eher pixelig) 100 von 100 Miniaturbild (oder 10 von 10) anzeigen, durch manuelle Einstellung der Höhe und Breite im image_src-Tag.

Allerdings scheinen SVG-Dateien mit Objekt/Embed-Tags verwendet zu werden, und die Änderung der Höhe oder Breite von THOSE führt nur dazu, dass mehr Platz für das Bild zugewiesen wird.

Gibt es eine Möglichkeit anzugeben, dass ein SVG-Bild kleiner oder größer angezeigt werden soll, als es tatsächlich im Dateisystem gespeichert ist?

Antwort

125

Öffnen Sie Ihre .svg Datei mit einem Texteditor (es ist nur XML), und suchen Sie nach so etwas wie dies an der Spitze:

<svg ... width="50px" height="50px"... 

Erase Höhe und Breite; Die Standardwerte sind 100%, also sollte es sich auf alles erstrecken, was der Container zulässt.

+49

Ja, das stimmt, aber Sie müssen auch ein ‚viewBox‘ Attribut (zB viewBox = „0 0 50 50“ in Ihrem 50x50px Beispiel) hinzuzufügen, da sonst der Inhalt nicht richtig skaliert könnte (wird auf den Behälter abhängen Maße). Scour wird dies automatisch für Sie tun, http://www.codedread.com/scour/. –

+0

Hurra! Das hat geholfen! Ich hatte schon Sachen zu 100% in der Datei, stellt sich heraus, aber die Viewbox war der Schlüssel! Danke euch beiden! – Jenny

+12

Falls es für andere nicht offensichtlich ist, wird bei 'viewBox' zwischen Groß- und Kleinschreibung unterschieden. Außerdem sind die ersten beiden Koordinaten die obere linke Ecke, wenn Sie das Bild beschneiden, und die zweiten beiden Koordinaten sind die Breite und Höhe * vor der Skalierung. –

35

Versuchen Sie diese:

  1. die Set fehlt Sichtbox und in den Höhen- und Breitenwerte der eingestellten Höhe füllen und Höhenattribute im SVG-Tag

  2. dann das Bild skalieren einfach durch Einstellung der Höhe und Breite zu den gewünschten Prozent Werte. Viel Glück.

  3. Sets ein festes Seitenverhältnis mit preserveAspectRatio="X200Y200 meet (zum Beispiel 200 Pixel), aber es ist nicht notwendig,

z.B.

<svg 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:cc="http://creativecommons.org/ns#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:svg="http://www.w3.org/2000/svg" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 
    width="10%" 
    height="10%" 
    preserveAspectRatio="x200Y200 meet" 
    viewBox="0 0 350 350" 
    id="svg2" 
    version="1.1" 
    inkscape:version="0.48.0 r9654" 
    sodipodi:docname="namesvg.svg"> 
15

Sie es durch die Anzeige svg in-Bild-Tag und Größe Bild-Tag heißt

<img width="200px" src="lion.svg"></img> 
+1

Das Problem, das ich bei der Verwendung von denke, ist, dass Sie die Failover-Funktionen des Tags verlieren (was für IE-Benutzer in Version 8 und darunter relevant sein könnte). –

6

Ändern der Breite des Behälters auch fixiert, anstatt die Änderung der Breite und Höhe der Quelldatei der Größe verändern können.

.SvgImage img{ width:80%; } 

Dies behebt meine Frage der Wieder Sizing svg. Sie können% basierend auf Ihrer Anforderung angeben. Hier

3

ist ein Beispiel für die Grenzen immer mit svg.getBox(): https://gist.github.com/john-doherty/2ad94360771902b16f459f590b833d44

Am Ende Sie Zahlen, die Sie in die SVG-Plug kann man richtig die Sichtgerät eingestellt. Dann benutze eine beliebige CSS in der Eltern-Div und du bist fertig.

// get all SVG objects in the DOM 
var svgs = document.getElementsByTagName("svg"); 
var svg = svgs[0], 
    box = svg.getBBox(), // <- get the visual boundary required to view all children 
    viewBox = [box.x, box.y, box.width, box.height].join(" "); 

    // set viewable area based on value above 
    svg.setAttribute("viewBox", viewBox); 
Verwandte Themen