Mik*_*Sav 8 javascript css css-animations
我刚在想.我知道我可以通过侦听animationstart,animationiteration,animationend事件(显然我们在那里缺少浏览器前缀)来检测CSS动画何时开始,完成或重复,例如:
document.getElementById('identifier')
.addEventListener("animationstart", function(){
// do something...
});
Run Code Online (Sandbox Code Playgroud)
但我想知道,是否有可能确定我们在运行CSS动画的位置,例如,当我们处于关键帧动画的50%时,我可以监听以下内容:
<!DOCTYPE html>
<html>
<head>
<style>
#animateDiv {
width: 100px;
height: 100px;
background-color: red;
position: relative;
animation-name: example;
animation-duration: 4s;
}
@keyframes example {
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
</style>
</head>
<body>
<div id="animateDiv"></div>
<script>
// what do I do here? How do I listen for the 50% event of the keyframes?
document.getElementById('animateDiv').addEventListener('animation at 50%?', function() {
console.log('got it');
})
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 5
我不知道你是否可以从 CSS 动画中获取精确的关键帧,但你可以使用一些数学来获取它,就像我们的伙伴 Paulie_D 所建议的那样。
在您的代码中,您的动画长度为 4 秒,因此,动画的关键帧 50% 在 2 秒之后:
//......
//when the animation starts....
setTimeout(function(){
//Enter your stuff here
}, 2000); //2 seconds delay, considering your animation length = 4s;
Run Code Online (Sandbox Code Playgroud)
您还可以使用(需要 jQuery):
$("#animated_element").bind("half_animation", function(){
//Ya stuff here
});
//.........
//When the animation starts...
setTimeout(function()
{
$("#animated_element").trigger("half_animation");
}, 2000);
Run Code Online (Sandbox Code Playgroud)
或者:
$("#animated_element").bind("half_animation", function(){
once = 0;
setTimeout(function()
{
//Ya stuff here....
}, 2000)
});
//........
//When the animation starts
$("#animated_element").trigger("half_animation");
Run Code Online (Sandbox Code Playgroud)