Подтвердить что ты не робот

Получение текстовой области с помощью getBBox()

var text = vis.selectAll("text")
    .data(words, function(d) { return d.text.toLowerCase(); });
    text.enter().append("text")
    .attr("text-anchor", "middle")
    .attr("transform", function(d) {
               return "translate(" + [d.x, d.y] + ")"})
    .style("font-size", function(d) { return d.size + "px"; })


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

Как использовать getBBox() для получения текстовой области каждого текста?

4b9b3361

Ответ 1

Лучший подход здесь зависит от того, что вы пытаетесь сделать. Большинство функций обратного вызова d3 будут поставлять текущий элемент DOM как this, поэтому это должно работать:

text.each(function() {
    console.log(this.getBBox());
});

Кроме того, вопрос - это контекст, в котором вам нужно использовать это число. Например, чтобы получить сумму ширины текста, вы можете сделать:

var textWidth = 0;
text.each(function() {
    textWidth += this.getBBox().width;
});

Ответ 2

Вы также можете сделать это синхронно на элементе с помощью node():

console.log(text.node().getBBox());