[英]D3js - can't change style for svg text elemets
我正在使用d3.js在svg画布上创建文本元素。 我正在尝试更改文本样式。 但是它似乎不起作用。 只有xy坐标可以成功更改,但是其他属性(如字体大小和颜色)将不会更改。 我也尝试使用.attr
而不是.style
。 没啥事儿。 有人可以帮忙吗? 真的很感激!!
//create canvas
var canvas = d3.select("body")
.append("svg")
.attr("width", 500)
.attr("height", 500);
//text data
var textSpec = [{"content" : "testing", "font-family" : "sans-serif","font-size" : "80px", "color" : "red" , "x" : 100 , "y" : 15}];
//text display
var text = canvas.selectAll("text")
.data(textSpec)
.enter()
.append("text")
.attr("x", function(d) { return d.x;})
.attr("y", function(d) { return d.y;})
.text(function(d) { return d.content})
.style("font-family", function(d) { return d.font-family;})
.style("font-size", function(d) { return d.font-size;})
.style("stroke", red)
.style('fill', function(d) { return d.color;});
报告错误:
Uncaught ReferenceError: family is not defined
因为d.font-family
不被视为变量d
属性font-family
,而是被视为变量d
减去family
属性font
。
同样, red
也像未定义的变量一样使用。
您必须将代码更改为:
...
.style("font-family", function(d) { return d['font-family'];})
.style("font-size", function(d) { return d['font-size'];})
.style("stroke", 'red')
.style('fill', function(d) { return d.color;});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.