Necesito saber exactamente el ancho y la altura de un g
elemento arbitrario en mi SVG
porque necesito dibujar un marcador de selección a su alrededor una vez que el usuario ha hecho clic en él.
Lo que he visto en internet es algo así como: d3.select("myG").style("width")
. El problema es que el elemento no siempre tendrá un atributo de ancho explícito establecido. Por ejemplo, cuando creo un círculo dentro de g
, tendrá radious ( r
) en lugar del ancho. Incluso si uso el window.getComputedStyle
método en a circle
, devolverá "auto".
¿Hay alguna forma de calcular el ancho de una selección arbitraria svg
en D3
?
Gracias.
javascript
d3.js
André Pena
fuente
fuente
getBoundingClientRect()
lugar de solo SVGgetBBox()
. Así:d3.select("body").node().getBoundingClientRect().width
Ejemplo:
fuente
Una vez me enfrenté al problema cuando no sabía cuál era el elemento almacenado actualmente en mi variable (svg o html) pero necesitaba obtener el ancho y el alto. Creé esta función y quiero compartirla:
Pequeña demostración en el fragmento oculto a continuación. Manejamos clic en el div azul y en el círculo svg rojo con la misma función.
Mostrar fragmento de código
fuente