Necesito saber exactamente el ancho y la altura de un gelemento arbitrario en mi SVGporque 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.getComputedStylemétodo en a circle, devolverá "auto".
¿Hay alguna forma de calcular el ancho de una selección arbitraria svgen D3?
Gracias.
javascript
d3.js
André Pena
fuente
fuente

getBoundingClientRect()lugar de solo SVGgetBBox(). Así:d3.select("body").node().getBoundingClientRect().widthEjemplo:
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