Skip to content

Instantly share code, notes, and snippets.

Last active March 19, 2018 02:57
What would you like to do?
license: gpl-3.0
<!DOCTYPE html>
<meta charset="utf-8">
<script src="//"></script>
var svg ="body").append("svg")
.attr("width", 960)
.attr("height", 500);
var text = svg.append("text")
.attr("x", 480)
.attr("y", 250)
.attr("dy", ".35em")
.attr("text-anchor", "middle")
.style("font", "300 128px Helvetica Neue")
.text("Hello, getBBox!");
var bbox = text.node().getBBox();
var rect = svg.append("rect")
.attr("x", bbox.x)
.attr("y", bbox.y)
.attr("width", bbox.width)
.attr("height", bbox.height)
.style("fill", "#ccc")
.style("fill-opacity", ".3")
.style("stroke", "#666")
.style("stroke-width", "1.5px");
Copy link

if you are needing to draw the text after the rect, like if the fill-opacity is 1.0, you can do this:

var svg ="body").append("svg:svg")

var layer1 = svg.append('g')  // draw in this order
var layer2 = svg.append('g')

var text = layer2.append("svg:text")      // create in this order

var bbox = text.node().getBBox();

var rect = layer1.append("svg:rect")
    .attr("width", bbox.width)
    .attr("height", bbox.height)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment