2009-12-29 41 views

Respuesta

38

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:

  1. 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;

  2. 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.

+1

+1 para la edición. –

+5

'getBBox' devuelve' {[..], ancho: 0, alto: 0} 'también lo hace' getBoundingClientRect'. Este último no funciona solo en Firefox. – Gajus

+0

No ajuste su elemento con jQuery (como $ (yourElement)), ya que getBox no es una función. – Cedric

-3

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.

+0

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. –

+0

Tendrás que hacer una suposición al respecto. Si tus pulgares son 100x100, ¿por qué no mostrar el SVG a 100x100? – jball

+0

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? –

Cuestiones relacionadas