我有一个水平条形图,我正在显示字段名称。如果名称(文本)超出条形,则文本必须为黑色,如下图所示。我该怎么做?
答案 0 :(得分:2)
这不是一件容易的事。你必须
.getBBox()
或类似内容确定其实际尺寸。tspan
)。也就是说,您必须手动将文本拆分为您想要不同样式的部分,然后分配这些样式。
答案 1 :(得分:2)
我设法使用两个文本标签。顶部标签包裹在svg中,因此它剪辑它的长度。以下是工作示例 - http://jsfiddle.net/cuckovic/C6SSj/
bar.append("text")
.attr("class", "below")
.attr("x", 12)
.attr("dy", "1.2em")
.attr("text-anchor", "left")
.text(function(d) { return d.sharedLabel; })
.style("fill", "#000000");
bar.append("rect")
.attr("class", "malebar")
.attr("height", barWidth-gap)
.attr("x", 10);
bar.append("svg")
.attr({
height: barWidth-gap
})
.append("text")
.attr("class", "up")
.attr("x", 12)
.attr("dy", "1.2em")
.attr("text-anchor", "left")
.text(function(d) { return d.sharedLabel; })
.style("fill", "#ffffff");