Entonces, ¿cómo obtener el tamaño de un archivo SVG con javascript cuando ancho y alto no están establecidos en el elemento svg? El svg es una cadena, pero podría convertirse en DOM si fuera necesario.Obtener svg graphics size cuando los atributos width/height en <svg> no están configurados
Respuesta
Puede usar el método getBBox() del objeto SVGElement. Le indica el ancho y alto, x e y offset en píxeles sin tener en cuenta la escala del elemento.
document.getElementById('myelem').getBBox().width
document.getElementById('myelem').getBBox().height
son lo que estás buscando, creo.
EDIT:
recientemente he aprendido también que los pequeños conocidos
getBoundingClientRect()
funciona tan bien! También puede hacerlo:var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
Tenga en cuenta que existe una diferencia entre getBox y getBoundingClientRect. getBBox obtiene las dimensiones iniciales - getBoundingClientRect también respeta las transformaciones hecho con escala etc.
SVG son escalables gráficos vectoriales, y por lo tanto pueden tener cualquier altura y ancho arbitrarios. Solo la relación es fijada por el formato.
Muchas gracias, lo sé, pero en el widget SVG viever hago (http://my.opera.com /SpShut/blog/show.dml/5803641) Necesito mostrar miniaturas de archivos SVG (digamos 100x100), y si un archivo no tiene atributos width/height ni viewBox, se muestra en * algún tamaño * y solo una porción de 100x100 es visible. Quiero procesar el archivo de alguna manera para obtener las dimensiones y establecer los atributos width/height y viewBox. –
Tendrás que hacer una suposición al respecto. Si tus pulgares son 100x100, ¿por qué no mostrar el SVG a 100x100? – jball
Configuro y si el archivo.svg no tiene ancho y alto y viewBox solo 100x100 parte si se muestra. Quiero determinar el tamaño de los gráficos, establecer los atributos y volver a escribir el archivo en el disco, por lo que una suposición no funcionará. ¿Alguna idea de como hacer esto? –
- 1. ¿Los punteros siempre están configurados como nulos en la declaración?
- 2. Están los atributos personalizados OK en XHTML
- 3. Exportar como SVG en Adobe Illustrator canvas size issues
- 4. Modificar los atributos svg con javascript no tiene efecto
- 5. Obtener todos los nombres de tabla configurados en SessionFactory
- 6. jQuery obtener todos los atributos HTML
- 7. Los límites de ventana configurados en la ventana con AppleScript en OS X están siendo ignorados
- 8. Obtener tamaño de los gráficos SVG mediante javascript
- 9. svn (subversion) ignoran tipos de archivos específicos en todos los subdirectorios, ¿están configurados en la raíz?
- 10. ¿Cómo obtener ScrollBars en SVG?
- 11. <size> atributo no es útil cuando se usa layer-list?
- 12. ¿Cómo mi pom encuentra mi pom padre si los repositorios están configurados en el pom padre?
- 13. atributos php SimpleXML están desaparecidos
- 14. ¿Es una buena idea usar NaN de punto flotante IEEE754 para los valores que no están configurados?
- 15. Ehcache - using SelfPopulatingCache cuando los datos no están presentes
- 16. sombra de CALayer con atributos de Spread & Size?
- 17. Jenkins generación falla cuando los artefactos no están allí
- 18. ¿Cómo puedo obtener las coordenadas x/y de un elemento SVG (ruta, etc.) que no tiene los atributos X/Y?
- 19. SVG obtener ancho de elemento de texto
- 20. ¿Qué partes de UIKit, Core Graphics, Core Animation, OpenGL están permitidas en no main-thread?
- 21. DropDownListFor Unobtrusive Validación requerida No obtener los atributos correctos
- 22. Detectando cuando los auriculares están enchufados
- 23. SVG: ¿Utiliza atributos o CSS para estilo?
- 24. Cómo obtener manualmente la instancia del objeto Graphics en WinForms?
- 25. ¿Los atributos JsonIgnore no funcionan en ASP.NET?
- 26. parámetros css no configurados al animar
- 27. Detectando cuando los estilos están deshabilitados
- 28. Xcode 4.3 no presenta el panel Autoresizing en Size Inspector
- 29. cambios de github no configurados para commit
- 30. Cómo sobrescribir HTML <FONT SIZE = "2"> con CSS
+1 para la edición. –
'getBBox' devuelve' {[..], ancho: 0, alto: 0} 'también lo hace' getBoundingClientRect'. Este último no funciona solo en Firefox. – Gajus
No ajuste su elemento con jQuery (como $ (yourElement)), ya que getBox no es una función. – Cedric