Alors, comment obtenir la taille d'un fichier SVG avec javascript lorsque width et height ne sont pas définies sur l'élément svg? Le svg est une chaîne, mais pourrait être un DOM si nécessaire.Get svg taille graphique lorsque les attributs width/height sur <svg> ne sont pas réglés
Répondre
Vous pouvez utiliser la méthode getBBox() de l'objet SVGElement. Il vous indique la largeur et la hauteur, le décalage x et y en pixels sans tenir compte de la mise à l'échelle de l'élément.
document.getElementById('myelem').getBBox().width
document.getElementById('myelem').getBBox().height
est ce que vous cherchez, je pense.
EDIT:
J'ai récemment aussi appris que les
getBoundingClientRect()
peu connus fonctionne aussi bien! Vous pouvez également faire:var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
Gardez à l'esprit qu'il existe une différence entre getBBox et getBoundingClientRect. getBBox obtient les dimensions initiales - getBoundingClientRect respecte également les transformations fait avec l'échelle, etc.
Les fichiers SVG sont évolutifs graphiques vectoriels, et peuvent donc avoir n'importe quelle hauteur et largeur arbitraires. Seul le ratio est fixé par le format.
Merci beaucoup, je sais, mais dans le widget SVG viever je fais (http://my.opera.com /SpShut/blog/show.dml/5803641) J'ai besoin d'afficher les vignettes des fichiers SVG (disons 100x100), et si un fichier n'a ni attributs width/height ni viewBox, il est affiché à * une certaine taille * et seulement une partie 100x100 est visible. Je veux traiter le fichier en quelque sorte pour obtenir les dimensions et définir les attributs width/height et viewBox. –
Vous devrez alors faire une supposition à ce sujet. Si vos pouces sont 100x100 alors pourquoi ne pas afficher le SVG à 100x100? – jball
Je mets et si le fichier.svg n'a pas de largeur & height & viewBox seulement 100x100 partie si elle est affichée. Je veux déterminer la taille des graphiques, définir les attributs et réécrire le fichier sur le disque, donc une hypothèse ne fera pas. Des idees pour faire cela? –
- 1. Les attributs imbriqués ne sont pas enregistrés
- 2. SVG Graphique linéaire sur les axes connus
- 3. Tortue graphique en SVG?
- 4. SVG <image> ne fonctionne pas dans <defs> sur Chrome
- 5. Pourquoi SVG ne fonctionne pas sur les fichiers HTML locaux?
- 6. Performances lorsque les exceptions ne sont pas levées (C++)
- 7. Les données après <textarea> ne sont pas affichées
- 8. HTML5 svg ne fonctionne pas
- 9. Quels sont les attributs?
- 10. Pourquoi ces attributs de classe ne sont-ils pas enregistrés?
- 11. Les points dessinés dans l'événement onload de l'élément SVG ne sont PAS affichés lors du rendu
- 12. Get octet taille de la liste <T>
- 13. Les fichiers de liste Android ne sont pas actualisés lorsque les fichiers sont modifiés
- 14. Obtenez la taille des graphiques SVG par javascript
- 15. Les attributs XML sont triés
- 16. $ .get ne fonctionne pas?
- 17. SVG en Java ne s'affiche pas correctement
- 18. Tous les commentaires ne sont pas visibles lorsque l'on tire un message en utilisant Facebook graphique API iphone
- 19. SVG avec des images externes ne les charge pas lorsqu'il est incorporé avec l'étiquette <img> dans les navigateurs
- 20. Les attributs DataAnnotation ne fonctionnent pas dans Asp.Net MVC2
- 21. La largeur ne change pas lorsque la taille change
- 22. Les attributs JsonIgnore ne fonctionnent pas dans ASP.NET?
- 23. <img> Attributs
- 24. Attribute.IsDefined ne voit pas les attributs appliqués avec classe MetadataType
- 25. Get * tous * CSS attributs avec jQuery
- 26. Fenêtres fantômes lorsque les couleurs ne sont pas Aero sur Vista
- 27. Diagramme de maillage lorsque les valeurs X et Y ne sont pas sur une grille
- 28. ccnet Ne déclenche pas la génération lorsque les modifications sont validées sur svn
- 29. AllowMultiple ne fonctionne pas avec les attributs de propriété?
- 30. svg ne fonctionne pas avec IE?
+1 pour l'édition. –
'getBBox' renvoie' {[..], width: 0, height: 0} 'ainsi que' getBoundingClientRect'. Ce dernier ne fonctionne pas seulement dans FireFox. – Gajus
Ne pas envelopper votre élément avec jQuery (comme $ (yourElement)), comme getBBox n'est pas une fonction alors. – Cedric