J'ai quelques fichiers SVG qui spécifient width
et height
ainsi que viewbox
ceci:
<svg width="576pt" height="432pt" viewBox="0 0 576 432" > ...
mais comment les afficher dans le navigateur à une taille que je décide? Je les veux plus petits et j'ai essayé:
<object width="400" data="image.svg"></object>
mais alors j'obtiens des barres de défilement visibles.
Cela fonctionne si je change les fichiers SVG pour définir width
et height
pour à la 100%
place, mais je veux décider de la taille dans le HTML quelles que soient les tailles utilisées dans le fichier SVG. Est-ce possible ?
Réponses:
Pour ce faire, vous pouvez ajouter les attributs «preserveAspectRatio» et «viewBox» à la
<svg>
balise.Ouvrez le fichier .svg dans un éditeur et recherchez la
<svg>
balise. dans cette balise, ajoutez les attributs suivants:Remplacez {width} et {height} par des valeurs par défaut pour la viewBox. J'ai utilisé les valeurs des attributs "width" et "height" de la balise SVG et cela semblait fonctionner.
Enregistrez le SVG et il devrait maintenant être mis à l'échelle comme prévu.
J'ai trouvé cette information ici:
https://blueprints.launchpad.net/inkscape/+spec/allow-browser-resizing
la source
preserveAspectRatio="xMinYMin meet"
n'était pas assez pour moi. J'avais également besoin de fournir unviewBox
comme mentionné dans la réponse. Pitié!preserveAspectRatio="none"
si vous souhaitez étirer le svg de manière arbitraire.100%
comme indiqué dans cette réponse .Aucune des réponses données ici n'a fonctionné pour moi lorsque j'ai posé cette question en 2009. Comme j'avais à nouveau le même problème, j'ai remarqué que l'utilisation de la
<img>
balise et de la largeur avec un svg fonctionne bien.la source
<img>
vous perdez toute interactivité avec les liens, javascript, etc.<img width="400" src="image.svg"/>
.Vous pouvez accéder au svg intégré en utilisant JavaScript:
Puisque votre svg a déjà une viewBox, Firefox doit redimensionner la largeur de 576 pixels dans la viewBox à la largeur de 400 pixels de votre document. D'autres svgs pourraient bénéficier d'une nouvelle viewBox dérivée de la largeur et de la hauteur annoncées (ce sont souvent les mêmes nombres). D'autres navigateurs peuvent bénéficier de différents ajustements svg.
la source
Security error: attempted to read protected variable
img / logo.svg ...
Cette configuration a fonctionné pour moi.
la source
viewBox="0 0 640 80"
. Apparemment, si cela n'est pas défini, vous ne pouvez pas vraiment le mettre à l'échelle ou laisser CSS le mettre à l'échelle pour vous en utilisant par exemple,width: 100%
etc.J'ai rencontré un problème où iOS sur un iPad ne redimensionnait pas correctement les images SVG dans une
<object>
balise.Le style CSS augmenterait ou diminuerait la taille du
<object>
conteneur, mais l'image à l'intérieur ne serait pas modifiée (sur iPad, iOS 7).Les images SVG ont été exportées à partir d'Adobe Illustrator, et la solution s'est avérée être de remplacer la largeur et la hauteur dans ceci:
avec:
J'avais besoin d'utiliser la
<object>
balise car la<img>
balise ne prend actuellement pas en charge l'incorporation d'images bitmap dans les SVG.la source
Définissez la zone de visualisation manquante et remplissez les valeurs de hauteur et de largeur des attributs de hauteur et de hauteur définis dans la balise svg
Mettez ensuite l'image à l'échelle en réglant simplement la hauteur et la largeur sur les valeurs de pourcentage souhaitées . Bonne chance.
Vous pouvez définir un rapport hauteur / largeur fixe avec preserveAspectRatio = "x200Y200 meet, mais ce n'est pas nécessaire
par exemple
la source
Utilisez simplement CSS pour que le navigateur redimensionne le SVG! Comme ceci:
<object style="width:30%">
Voir http://www.vlado-do.de/svg_test/ pour plus de détails. Je l'ai juste essayé aussi localement avec un SVG dont la largeur et la hauteur sont données en "pt". Cela fonctionne bien dans Firefox.la source
Laisse voir. J'ai dû me rafraîchir la mémoire sur SVG, je ne l'ai pas beaucoup utilisé ces années-ci.
D'après ce que j'ai trouvé aujourd'hui, il semble que si vous spécifiez la dimension des objets sans unités, ils ont une taille fixe (en pixels, je pense). Apparemment, alors, il n'y a aucun moyen de les redimensionner lorsque vous redimensionnez le SVG (cela ne change que la taille de la fenêtre / du canevas).
Sauf, comme indiqué, vous spécifiez la taille du SVG en pourcentage OU spécifiez une viewBox (par exemple. ViewBox = "0 0 600 500").
Maintenant, si vous n'avez aucun moyen de changer le SVG exporté, vous n'avez pas de chance, je le crains. Quelle bibliothèque utilisez-vous?
la source
Voici une solution PHP utilisant QueryPath basée sur la réponse de Jim Keller.
Une fois QueryPath chargé, passez simplement votre script svg à la fonction.
la source