Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SVG get text element width

I'm working on some ECMAScript/JavaScript for an SVG file and need to get the width and height of a text element so I can resize a rectangle that surrounds it. In HTML I would be able to use the offsetWidth and offsetHeight attributes on the element but it appears that those properties are unavailable.

Here's a fragment that I need to work with. I need to change the width of the rectangle whenever I change the text but I don't know how to get the actual width (in pixels) of the text element.

<rect x="100" y="100" width="100" height="100" /> <text>Some Text</text> 

Any ideas?

like image 259
Stephen Sorensen Avatar asked Oct 28 '09 12:10

Stephen Sorensen


People also ask

How do you find the width of an SVG text element?

To get text element width of an SVG with JavaScript, we can use the getBBox method. const bbox = textElement. getBBox(); const width = bbox. width; const height = bbox.

How does SVG determine width height?

To get width and height of SVG element with JavaScript, we can use the getBoundingClientRect method. const el = document. getElementById("yourElement"); const rect = el.

How do I display text in SVG?

In SVG, text is rendered with the <text> element. The simplest example of a <text> element is one that uses just x and y attributes to place it. Text is rendered by default with a black fill and no outline.

Can an SVG have text?

A text content element is an SVG element that causes a text string to be rendered onto the canvas. The SVG text content elements are: 'text', 'textPath' and 'tspan'.


2 Answers

var bbox = textElement.getBBox(); var width = bbox.width; var height = bbox.height; 

and then set the rect's attributes accordingly.

Link: getBBox() in the SVG v1.1 standard.

like image 106
NickFitz Avatar answered Sep 25 '22 00:09

NickFitz


document.getElementById('yourTextId').getComputedTextLength(); 

worked for me in

like image 22
Zombi Avatar answered Sep 25 '22 00:09

Zombi