Ich habe einige SVG-Dateien, die Folgendes angeben width
und height
auch viewbox
mögen:
<svg width="576pt" height="432pt" viewBox="0 0 576 432" > ...
aber wie werden sie im Browser in einer von mir festgelegten Größe angezeigt? Ich möchte sie kleiner haben und habe versucht:
<object width="400" data="image.svg"></object>
aber dann bekomme ich sichtbare Bildlaufleisten.
Es funktioniert , wenn ich die SVG - Dateien in Satz ändern width
und height
zu 100%
statt, aber ich mag die Größe in der HTML entscheiden , unabhängig davon , welche Größen in der SVG - Datei verwendet werden. Ist das möglich ?
Antworten:
Sie können den Attributen "keepAspectRatio" und "viewBox" hinzufügen
<svg>
Tag die , um dies zu erreichen.Öffnen Sie die SVG-Datei in einem Editor und suchen Sie das
<svg>
Tag. Fügen Sie in diesem Tag die folgenden Attribute hinzu:Ersetzen Sie {width} und {height} durch einige Standardeinstellungen für die viewBox. Ich habe die Werte aus den Attributen "width" und "height" des SVG-Tags verwendet und es schien zu funktionieren.
Speichern Sie die SVG und sie sollte nun wie erwartet skaliert werden.
Ich habe diese Informationen hier gefunden:
https://blueprints.launchpad.net/inkscape/+spec/allow-browser-resizing
quelle
preserveAspectRatio="xMinYMin meet"
mir das einfach nicht genug war. Ich musste auch eineviewBox
wie in der Antwort erwähnt angeben. Das Mitleid!preserveAspectRatio="none"
wenn Sie das SVG auf beliebige Weise ausdehnen möchten.100%
wie in dieser Antwort angegeben einstellen .Keine der hier gegebenen Antworten funktionierte für mich, als ich dies 2009 fragte. Da ich jetzt wieder das gleiche Problem hatte, bemerkte ich, dass die Verwendung des
<img>
Tags und der Breite zusammen mit einem SVG gut funktioniert.quelle
<img>
, verlieren Sie jegliche Interaktivität mit Links, Javascript usw.<img width="400" src="image.svg"/>
.Sie können mit JavaScript in das eingebettete SVG zugreifen:
Da Ihr SVG bereits über eine ViewBox verfügt, sollte Firefox die Breite von 576 Pixel in der ViewBox auf die Breite von 400 Pixel in Ihrem Dokument skalieren. Andere SVGs profitieren möglicherweise von einer neuen ViewBox, die aus der angegebenen Breite und Höhe abgeleitet wird (dies sind häufig die gleichen Zahlen). Andere Browser profitieren möglicherweise von anderen SVG-Optimierungen.
quelle
Security error: attempted to read protected variable
img / logo.svg ...
Dieses Setup hat bei mir funktioniert.
quelle
viewBox="0 0 640 80"
. Wenn dies nicht definiert ist, können Sie es anscheinend nicht wirklich skalieren oder CSS für Sie skalieren lassen, indem Sie zwidth: 100%
. B. usw. verwendenIch habe ein Problem festgestellt, bei dem iOS auf einem iPad die Größe von SVG-Bildern in a nicht korrekt ändert
<object>
Tag .Der CSS-Stil würde die Größe des erhöhen oder verringern
<object>
Container , aber das darin enthaltene Bild würde nicht geändert (auf dem iPad, iOS 7).Die SVG-Bilder wurden aus Adobe Illustrator exportiert, und es stellte sich heraus, dass die Lösung die Breite und Höhe in folgenden Fällen ersetzte:
mit:
Ich musste das
<object>
Tag verwenden, da das<img>
Tag derzeit das Einbetten von Bitmap-Bildern in SVGs nicht unterstützt.quelle
Stellen Sie das fehlende Ansichtsfeld ein und geben Sie die Werte für Höhe und Breite der festgelegten Attribute für Höhe und Höhe in das SVG-Tag ein
Skalieren Sie das Bild dann einfach, indem Sie Höhe und Breite auf die gewünschten Prozentwerte einstellen . Viel Glück.
Sie können ein festes Seitenverhältnis miterveAspectRatio = "x200Y200 meet" festlegen, dies ist jedoch nicht erforderlich
z.B
quelle
Verwenden Sie einfach CSS, damit der Browser die Größe des SVG ändert! Gefällt mir: Weitere Informationen finden
<object style="width:30%">
Sie unter http://www.vlado-do.de/svg_test/ . Ich habe es gerade auch lokal mit einem SVG versucht, dessen Breite und Höhe in "pt" angegeben ist. Es funktioniert gut in Firefox.quelle
Mal sehen. Ich musste mein Gedächtnis auf SVG auffrischen, ich habe es in diesen Jahren nicht viel benutzt.
Nach dem, was ich heute gefunden habe, scheint es, dass wenn Sie die Dimension von Objekten ohne Einheiten angeben, diese eine feste Größe haben (in Pixel, denke ich). Anscheinend gibt es dann keine Möglichkeit, die Größe zu ändern, wenn Sie die Größe des SVG ändern (es ändert nur die Größe des Ansichtsfensters / der Zeichenfläche).
Es sei denn, Sie weisen darauf hin, dass Sie die Größe der SVG in Prozent angeben ODER eine viewBox angeben (z. B. viewBox = "0 0 600 500").
Wenn Sie die exportierte SVG-Datei nicht ändern können, haben Sie leider kein Glück. Welche Bibliothek benutzt du?
quelle
Hier ist eine PHP-Lösung mit QueryPath basierend auf Jim Kellers Antwort.
Sobald QueryPath geladen ist, übergeben Sie einfach Ihr SVG-Skript an die Funktion.
quelle