Javascript

时间:2017-07-19 17:09:38

标签: javascript html css svg

我试图制作动画无限滚动条"旋转木马" ,将用作简单的时间表。

这是example

          var calcData = [5,10,15,20,30,40,55,75,55,40,30,20,15,10,5];
      var barWidth = 5;
      var barPadding = 20;
      var svg = d3.select("#chart").append('svg')
                            .attr("width",360)
                            .attr("height",200);

      var len = calcData.length;  

      for ( var i=0 ; i < len ; i++ ) {

              svg.append("rect")
                        .attr("class","rect-tick")
                        .attr("x", function() { return (barWidth + barPadding) * i})
                        .attr("y", 200 - calcData[i] * 2)
                        .attr("height", calcData[i] * 2)
                        .attr("width",barWidth);



      }

      function removeFirst(bound) {

          console.dir(bound.nodes()[0].remove());

      }



      function turnLeft() {

              //append last child rect
              var blockFlag = 0;
              var lastX = svg._groups[0][0].lastChild.x.baseVal.value;
              svg.append("rect")
                      .attr("class","rect-tick")
                      .attr("x", 350)
                      .attr("width", barWidth)
                      .attr("y", 200)
                      .attr("height", 0);

               //scroll left


               svg.selectAll("rect").transition("i" + Date.now()).duration(200)
                                .attr("x",function(d,i) {return (barWidth + barPadding)*i - (barWidth +                                                                                                 barPadding)})
                                .attr("height",function(d,i) {
                                        if (i===0) {
                                          return 0;
                                        }
                                        else {
                                            return calcData[i-1] * 2;

                                        }
                                })
                                .attr("y",function(d,i) {

                                    if (i===0) {

                                        return 200;

                                    }
                                    else {
                                      return 200 - (calcData[i-1] * 2);
                                    }
                                }).call(removeFirst);


      }

      d3.select("button").on("click",function(){

        svg.selectAll("rect").transition().duration(0);
        turnLeft();
      });


      turnLeft();

我想知道是否每次删除和追加孩子&#34;滚动&#34;是解决这个问题的正确方法。

我真的很感谢你的帮助!!

0 个答案:

没有答案