2016-08-30 42 views
0

我使用vivus.js来动画一个重复多次的svg(作为php循环的一部分)。Stagger js svg animation

我正在寻找一种错开动画的方式,以便svg id'hexx - 0'先动画,然后完成时,svg id'hexx - 1'动画等。身份证号码正在php循环中增加。

我已经尝试在一个函数,大火从字面上连锁这些当第一动画完成,像这样:

new Vivus('hexx--0', { 
    type: 'oneByOne', 
    duration: 100 
}, function() { 

    new Vivus('hexx--1', { 
    type: 'oneByOne', 
    duration: 100, 

    }); 

}); 

其工作原理,但一)指SVG动画火灾和B之前是可见)在整个可能有任意数量的svgs的循环中是混乱的和不可维护的。

是否有可能增加JavaScript中的ID,并在循环中生成新的Vivus?下面是一个复制问题的小提琴,请注意,html是通过实际情况通过php循环生成的。

//all animating at same time 
 

 
new Vivus('hexx--0', { 
 
    type: 'oneByOne', 
 
    duration: 100, 
 

 
}); 
 

 
new Vivus('hexx--1', { 
 
    type: 'oneByOne', 
 
    duration: 100, 
 

 
}); 
 

 
//attempt at staggering 
 

 
new Vivus('hexx--2', { 
 
    type: 'oneByOne', 
 
    duration: 100 
 
}, function() { 
 

 
    new Vivus('hexx--3', { 
 
    type: 'oneByOne', 
 
    duration: 100, 
 

 
    }); 
 

 
});
svg { 
 
    stroke: #000000; 
 
}
<body> 
 
    <svg version="1.1" id="hexx--0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="236.275px" height="265.632px" viewBox="0 0 236.275 265.632" enable-background="new 0 0 236.275 265.632" xml:space="preserve"> 
 
    <g> 
 
     <path fill="none" stroke-miterlimit="10" d="M118.046,1.007c-3.865,0-7.692,1.056-11.377,3.167 
 
         \t \t C73.449,23.21,40.564,42.238,12.778,58.341c-7.8,4.52-11.758,11.436-11.763,20.553c-0.019,35.954-0.021,71.906,0.002,107.86 
 
         \t \t c0.006,9.091,3.974,15.999,11.798,20.531c33.368,19.336,64.021,37.025,93.71,54.08c7.575,4.354,15.698,4.335,23.328-0.054 
 
         \t \t c30.902-17.775,61.802-35.635,93.377-53.891c7.991-4.621,12.043-11.68,12.042-20.98l-0.001-38.245l0.002-30.855 
 
         \t \t c0.003-12.791,0.006-25.582-0.009-38.373c-0.012-9.109-4.005-16.067-11.868-20.68c-6.162-3.615-12.562-7.301-18.208-10.551 
 
         \t \t l-22.8-13.16c-17.397-10.045-34.793-20.09-52.204-30.108C126.174,2.161,122.089,1.007,118.046,1.007" /> 
 
    </g> 
 
    </svg> 
 
    <svg version="1.1" id="hexx--1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="236.275px" height="265.632px" viewBox="0 0 236.275 265.632" enable-background="new 0 0 236.275 265.632" xml:space="preserve"> 
 
    <g> 
 
     <path fill="none" stroke-miterlimit="10" d="M118.046,1.007c-3.865,0-7.692,1.056-11.377,3.167 
 
         \t \t C73.449,23.21,40.564,42.238,12.778,58.341c-7.8,4.52-11.758,11.436-11.763,20.553c-0.019,35.954-0.021,71.906,0.002,107.86 
 
         \t \t c0.006,9.091,3.974,15.999,11.798,20.531c33.368,19.336,64.021,37.025,93.71,54.08c7.575,4.354,15.698,4.335,23.328-0.054 
 
         \t \t c30.902-17.775,61.802-35.635,93.377-53.891c7.991-4.621,12.043-11.68,12.042-20.98l-0.001-38.245l0.002-30.855 
 
         \t \t c0.003-12.791,0.006-25.582-0.009-38.373c-0.012-9.109-4.005-16.067-11.868-20.68c-6.162-3.615-12.562-7.301-18.208-10.551 
 
         \t \t l-22.8-13.16c-17.397-10.045-34.793-20.09-52.204-30.108C126.174,2.161,122.089,1.007,118.046,1.007" /> 
 
    </g> 
 
    </svg> 
 
    <svg version="1.1" id="hexx--2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="236.275px" height="265.632px" viewBox="0 0 236.275 265.632" enable-background="new 0 0 236.275 265.632" xml:space="preserve"> 
 
    <g> 
 
     <path fill="none" stroke-miterlimit="10" d="M118.046,1.007c-3.865,0-7.692,1.056-11.377,3.167 
 
         \t \t C73.449,23.21,40.564,42.238,12.778,58.341c-7.8,4.52-11.758,11.436-11.763,20.553c-0.019,35.954-0.021,71.906,0.002,107.86 
 
         \t \t c0.006,9.091,3.974,15.999,11.798,20.531c33.368,19.336,64.021,37.025,93.71,54.08c7.575,4.354,15.698,4.335,23.328-0.054 
 
         \t \t c30.902-17.775,61.802-35.635,93.377-53.891c7.991-4.621,12.043-11.68,12.042-20.98l-0.001-38.245l0.002-30.855 
 
         \t \t c0.003-12.791,0.006-25.582-0.009-38.373c-0.012-9.109-4.005-16.067-11.868-20.68c-6.162-3.615-12.562-7.301-18.208-10.551 
 
         \t \t l-22.8-13.16c-17.397-10.045-34.793-20.09-52.204-30.108C126.174,2.161,122.089,1.007,118.046,1.007" /> 
 
    </g> 
 
    </svg> 
 
    <svg version="1.1" id="hexx--3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="236.275px" height="265.632px" viewBox="0 0 236.275 265.632" enable-background="new 0 0 236.275 265.632" xml:space="preserve"> 
 
    <g> 
 
     <path fill="none" stroke-miterlimit="10" d="M118.046,1.007c-3.865,0-7.692,1.056-11.377,3.167 
 
         \t \t C73.449,23.21,40.564,42.238,12.778,58.341c-7.8,4.52-11.758,11.436-11.763,20.553c-0.019,35.954-0.021,71.906,0.002,107.86 
 
         \t \t c0.006,9.091,3.974,15.999,11.798,20.531c33.368,19.336,64.021,37.025,93.71,54.08c7.575,4.354,15.698,4.335,23.328-0.054 
 
         \t \t c30.902-17.775,61.802-35.635,93.377-53.891c7.991-4.621,12.043-11.68,12.042-20.98l-0.001-38.245l0.002-30.855 
 
         \t \t c0.003-12.791,0.006-25.582-0.009-38.373c-0.012-9.109-4.005-16.067-11.868-20.68c-6.162-3.615-12.562-7.301-18.208-10.551 
 
         \t \t l-22.8-13.16c-17.397-10.045-34.793-20.09-52.204-30.108C126.174,2.161,122.089,1.007,118.046,1.007" /> 
 
    </g> 
 
    </svg> 
 
</body> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/vivus/0.3.1/vivus.js"></script>

回答

0

我终于想通了这一点,带有固定在我的烦恼一滚草徽章。

步骤1:在JavaScript中,与递增IDS for循环:

//increment the ids 
    var i; 
    for (i = 0; i < 7; i++) { 

     new Vivus('hexx--' + i, { 
      type: 'scenario-sync' 
     }); 
    } 

我改变类型“情景同步”,这意味着可以使用HTML数据属性设置持续时间和延迟。

步骤2:在PHP我添加的数据属性的路径如下所示:

path data-delay="<?php echo $delay ?>" data-duration="<?php echo $duration ?>" 

和在一个PHP循环相应地递增的值。