简单问题:我尝试使用以下d3.js代码在<div id="chart"></div
内编写动画条形图:
data=[100,200,400,350];
d3.select("#chart")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("height",30)
.style("width",function(d){return d/2})
.style("background-color","grey")
.transition()
.style("width",function(d){return d})
.style("background-color","blue");
结果非常奇怪:条形颜色按预期从grey
变为red
,但其宽度保持在d/2
。
知道为什么吗?
答案 0 :(得分:1)
您正在使用css样式设置宽度。这需要units(px,em或%)。
更新的代码:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id="chart"></div>
<script>
data = [100, 200, 400, 350];
d3.select("#chart")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("height", "30px")
.style("width", function(d) {
return d / 2 + "px"
})
.style("background-color", "grey")
.transition()
.duration(2000)
.style("width", function(d) {
return d + "px";
})
.style("background-color", "blue");
</script>
</body>
</html>