如何使用css3使循环动画等待

时间:2012-09-07 11:43:23

标签: css css3 css-animations


我有一个css3动画,其中包含以下内容:

@-webkit-keyframes rotate {
    from {
    -webkit-transform: rotate(0deg);
    }
    to { 
    -webkit-transform: rotate(360deg);
    }
}

.animated {
-webkit-animation-name: rotate;
-webkit-animation-duration: 2.4s;
-webkit-animation-iteration-count: infinite;
-webkit-transition-timing-function: ease-in-out;
}

它完美无缺,好吧......我想让它在循环之间等待:
动画启动,动画完成,等待(约0.5秒)动画启动,动画结束,等待(约0.5秒) ) ...

PS:我已经尝试-webkit-animation-delay,但它不起作用。

任何帮助?

3 个答案:

答案 0 :(得分:24)

在动画持续时间内添加0.5秒,然后在keyframes中创建一个不会改变旋转量的额外帧;

@-webkit-keyframes rotate {
    0% {
    -webkit-transform: rotate(0deg);
    }
    83% { /*2.4 / 2.9 = 0.827*/
    -webkit-transform: rotate(360deg);
    }
    100% {
    -webkit-transform: rotate(360deg);
    }
}
.animated {
...
-webkit-animation-duration: 2.9s; /*note the increase*/
...
}

小演示:little link

答案 1 :(得分:0)

通过javascript在指定时间内禁用元素上的css类可能会解决您的问题。

function delayAnimation () {
    var animatedEl = document.getElementById('whatever');
    animatedEl.className = '';
    setTimeout(function () {
        animatedEl.className = 'animated'
        setTimeout(delayAnimation, 2400);// i see 2.4s is your animation duration
    }, 500)// wait 0.5s
}

希望这有帮助。

编辑:我更新了这个答案以修复代码。您可以在jsfiddle上看到完整的示例。感谢@Fabrice指出代码无效。

答案 2 :(得分:0)

您可以使用过渡。 例如:

transition: all 0.6s ease-in-out;

其中transition-delay:0.6s;