我想预先计算具有最大像素大小的文本,然后将最大宽度大小分配给所有其他文本。 getBBox给出了以下错误:
TypeError: Object [ TEXT ] has no method 'getBBox'
和getComputedTextLength()也不起作用。
这两种方法在写入页面后都会给出像素大小。我在服务器端创建图表,即nodejs,我想在将其写入页面之前计算像素大小。对此有什么方法吗?
编辑: 添加代码
chart.selectAll("svg:text")
.data(d3Data)
.enter().append("svg:text")
.attr("class", "d3LegendText")
.attr("transform", function(d, i) {
textLength = d.seriesName.length*6;
if (prev_legend_x + textLength + legend_padding_x > width) {
legend_y = legend_y + 15;
legend_x = 7;
} else {
legend_x = prev_legend_x;
}
prev_legend_x = legend_x + textLength + legend_padding_x;
return "translate(" + legend_x + "," + legend_y + ")"; })
.text(function(d, i) {
console.log(this.getBBox().width);
return d.seriesName;
})
您可以在变换中使用变量。我写它来计算像素大小取决于文本中的字符数。但我想要准确的文字宽度。