Preciso saber exatamente a largura e a altura de um g
elemento arbitrário no meu, SVG
porque preciso desenhar um marcador de seleção ao redor dele depois que o usuário clicar nele.
O que eu vi na internet é algo como: d3.select("myG").style("width")
. O problema é que o elemento nem sempre terá um atributo explícito de largura definido. Por exemplo, quando eu criar um círculo dentro do g
, ele terá o radious ( r
) definido em vez da largura. Mesmo se eu usar o window.getComputedStyle
método em a circle
, ele retornará "auto".
Existe uma maneira de calcular a largura de uma svg
seleção arbitrária D3
?
Obrigado.
javascript
d3.js
André Pena
fonte
fonte
getBoundingClientRect()
vez do somente SVGgetBBox()
. Assim:d3.select("body").node().getBoundingClientRect().width
Exemplo:
fonte
Uma vez me deparei com o problema, quando não sabia qual o elemento atualmente armazenado na minha variável (svg ou html), mas precisava obtê-lo em largura e altura. Criei esta função e quero compartilhá-la:
Pequena demonstração no trecho oculto abaixo. Lidamos com clique na div azul e no círculo svg vermelho com a mesma função.
Mostrar snippet de código
fonte