So, wie die Größe einer SVG-Datei mit Javascript, wenn Breite und Höhe nicht auf dem Svg-Element festgelegt sind? Die SVG ist eine Zeichenfolge, könnte aber bei Bedarf zu einem DOM gemacht werden.Get Svg Grafikgröße, wenn Breite/Höhe Attribute auf <svg> sind nicht festgelegt
Antwort
Sie können die getBBox() - Methode des SVGElement-Objekts verwenden. Er gibt Ihnen die Breite und Höhe, den x- und y-Versatz in Pixeln an, ohne die Skalierung des Elements zu berücksichtigen.
document.getElementById('myelem').getBBox().width
document.getElementById('myelem').getBBox().height
sind, was Sie suchen, denke ich. vor kurzem habe auch gelernt, dass die wenig bekannten getBoundingClientRect()
Werke sowie
Ich habe:
EDIT! Sie können auch tun:
var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
Beachten Sie, dass es einen Unterschied zwischen getBBox und getBoundingClientRect gibt. getBBox erhält die ursprünglichen Abmessungen - getBoundingClientRect respektiert auch die Transformationen getan mit Skala usw.
SVGs sind skalierbar Vektorgrafiken, und können daher jede beliebige Höhe und Breite haben. Nur das Verhältnis ist durch das Format festgelegt.
Vielen Dank, ich weiß, das ist, aber in der SVG Viever Widget i machen (http://my.opera.com /SpShut/blog/show.dml/5803641) Ich muss Thumbnails von SVG-Dateien anzeigen (sagen wir 100x100), und wenn eine Datei weder width/height noch viewBox-Attribute hat, wird sie bei * einiger Größe * und nur 100x100 Teilen angezeigt ist sichtbar. Ich möchte die Datei irgendwie verarbeiten, um die Dimensionen zu erhalten und Breite/Höhe und ViewBox-Attribute einzustellen. –
Sie müssen dann eine Annahme darüber machen. Wenn deine Daumen 100x100 sind, dann zeige das SVG auf 100x100 an. – jball
Ich setze und wenn die file.svg keine Breite & Höhe hat & viewBox nur 100x100 Teile wenn es angezeigt wird. Ich möchte die Größe von Grafiken bestimmen, die Attribute festlegen und die Datei auf der Festplatte neu schreiben, so dass eine Annahme nicht reicht. Irgendwelche Ideen wie man das macht? –
- 1. Tensorflow Grafikgröße
- 2. Funktioniert xVal, wenn die Attribute auf Interfaces definiert sind?
- 3. Passport.js Sitzungen festgelegt sind nicht, wenn Anmeldung mit Android
- 4. Feste Grafikgröße in ggplot2
- 5. Xamarin Forms - Etikett, Farbe und andere Attribute nicht aktualisiert, wenn ihre Binded Attribute gesetzt sind
- 6. Warum sind Validierungsdirektiven/-eigenschaften nicht auf Feld festgelegt?
- 7. Sind Attribute auf regulären Methoden möglich
- 8. Objektverweis nicht auf eine Instanz des Objekts festgelegt, wenn eine Liste <T> in C#
- 9. Nur Attribute aktualisieren, die nicht leer sind
- 10. svg ungültiger Wert für <path>
- 11. Timestamp Attribute sind nil
- 12. C# "Objektreferenz nicht auf eine Objektinstanz festgelegt" Get Type/Get Property
- 13. Element reagiert nicht auf Höhe, die als Prozentsatz festgelegt wird, obwohl Parent Höhe festgelegt hat
- 14. Get HTML-Attribute Splitter mit
- 15. Animate SVG <object>
- 16. Wo sind erweiterte Attribute gespeichert?
- 17. Listview nicht aktualisiert, wenn IsVisible auf True festgelegt ist
- 18. LINQ-Abfrage mit Liste <T> "Objektverweis nicht auf eine Instanz eines Objekts festgelegt."
- 19. Member Attribute, die Funktionen in C++ sind
- 20. Klicken Sie auf Verhaltensänderungen auf SVG beim Wechsel zwischen <img> und <object>
- 21. Position von <use> svg Pfad
- 22. HTML5-Tag <meter> Attribute
- 23. <td> nicht 'Breite' oder 'Max-Breite' Attribute gehorchen?
- 24. Get Element innerhalb einer SVG-Element klicken Sie auf
- 25. SVG-Pfade in Inkscape werden nicht geändert, wenn ich dehne
- 26. SVG: Anwenden der Maske auf Pfadgruppe <g> Tag
- 27. Chrome nicht Rendering SVG referenziert über <img> Tag
- 28. esri.config.defaults.io.proxyUrl ist nicht festgelegt
- 29. SVG <image> Element Rendering-Qualität
- 30. Ractive berechneten Attribute in get() zurück
+1 für die Bearbeitung. –
'getBBox' gibt '{[..], width: 0, height: 0}' zurück, also auch' getBoundingClientRect'. Letzteres funktioniert nicht nur in FireFox. – Gajus
Umwickeln Sie Ihr Element nicht mit jQuery (wie $ (yourElement)), da getBBox dann keine Funktion ist. – Cedric