D3过渡工作"背景颜色"但不是"宽度"

时间:2018-04-03 16:52:40

标签: javascript css d3.js bar-chart transition

简单问题:我尝试使用以下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

知道为什么吗?

1 个答案:

答案 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>