cells.append('rect')
.attr('x', function (d) { return d.x; })
.attr('y', function (d) { return d.y; })
.attr('height', function (d) { return d.dy; })
.attr('fill', function (d) { return d.children ? null : color(d.parent.name); })
cells.append('text')
.attr('x', function (d) { return d.x + d.dx / 2 })
.attr('y', function (d) { return d.y + d.dy / 2 })
.attr('fill', 'white')
.attr('font-size', 14)
.text(function (d) {
if (d.name.length < cells.rect.width) {
return d.name;
}
});
我不知道为什么
cells.rect.width
不工作?但我想知道的是如何在将文本附加到形状之前检查形状的宽度。
我还尝试将形状的宽度推入一个数组,然后使用索引循环遍历数组以检查名称的长度是否长于框的宽度。问题是在创建形状时,首先创建面积最大的形状(框)。另一方面,当附加文本时,它从右下角开始到左上角。
我知道文本的长度和像素是两个不同的单位,但我将把它放在一个简单的比例转换中。如何获得已经在屏幕上绘制的矩形的宽度?