J'ai besoin de connaître exactement la largeur et la hauteur d'un g
élément arbitraire dans mon SVG
parce que je dois dessiner un marqueur de sélection autour de lui une fois que l'utilisateur a cliqué dessus.
Ce que j'ai vu sur Internet est quelque chose comme: d3.select("myG").style("width")
. Le problème est que l'élément n'aura pas toujours un jeu d'attributs de largeur explicite. Par exemple, lorsque je crée un cercle à l'intérieur du g
, il aura le radious ( r
) défini au lieu de la largeur. Même si j'utilise la window.getComputedStyle
méthode sur a circle
, elle retournera "auto".
Existe-t-il un moyen de calculer la largeur d'un svg
sélement arbitraire dans D3
?
Je vous remercie.
la source
getBoundingClientRect()
place du SVG uniquementgetBBox()
. Comme ça:d3.select("body").node().getBoundingClientRect().width
Exemple :
la source
Une fois, j'ai rencontré le problème lorsque je ne savais pas quel élément actuellement stocké dans ma variable (svg ou html) mais que j'avais besoin de l'obtenir en largeur et en hauteur. J'ai créé cette fonction et je souhaite la partager:
Petite démo dans l'extrait caché ci-dessous. Nous gérons le clic sur le div bleu et sur le cercle svg rouge avec la même fonction.
Afficher l'extrait de code
la source