带有延迟的svg文本动画

时间:2015-05-08 07:13:40

标签: javascript svg svg-animate

我想实现像http://24ways.org/2013/animating-vectors-with-svg/这样的东西,但我希望每个字母在前一个完成后开始绘制。我不知道如何延迟实现这一点。

这是我的代码:

var init = function() {

path = new Array();
length = new Array();

for(var i=1; i<3; i++){
       path[i] = document.getElementById('path'+i);
       length = path[i].getTotalLength();
       path[i].style.transition = path[i].style.WebkitTransition = 'none';

       length[i] = length;
       path[i].style.strokeDasharray = length + ' ' + length;
       path[i].style.strokeDashoffset = length;

       path[i].getBoundingClientRect();
       path[i].style.transition = path[i].style.WebkitTransition = 'stroke-dashoffset 2s ease-in-out';

       path[i].style.strokeDashoffset = '0';
    }
};

init();

在这个例子中,我有两个字母'sp',我想首先画's',然后当完成'p'字母时。在我的例子中,两个字母同时绘制。如果有人能帮助我,我会很感激。

这是示例http://jsfiddle.net/thLvLkq0/

1 个答案:

答案 0 :(得分:1)

如何在延迟后让动画开始?

我把你的小提琴分开,让它像那样工作。

http://jsfiddle.net/pz19fL7h/

for(var i=1; i<3; i++) {
    init(i);
    (function(i) {
        window.setTimeout(function() { start(i, duration); }, (i-1)*duration);
    })(i);
}

所以基本上,行为是:

  1. 初始化(隐藏)所有路径
  2. 将所有内容设置为在持续时间* i延迟
  3. 后启动

    如果路径绘图的持续时间已知,则应该很容易做到。