javascript - 我可以用 JavaScript 检测我们在 CSS 关键帧动画中的百分比明智吗

标签 javascript css css-animations

我在想。我知道我可以通过监听 animationstart、animationiteration、animationend 事件(显然我们缺少浏览器前缀)来检测 CSS 动画何时开始、结束或重复,例如:

document.getElementById('identifier')
        .addEventListener("animationstart", function(){
          // do something...
        });

但我想知道,是否有可能确定我们在哪里运行 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>

最佳答案

你好,伙计。我不知道您是否可以从 CSS 动画中获得确切的关键帧,但您可以使用一些数学来获得它,就像我们的 friend Paulie_D 所建议的那样。

在您的代码中,您的动画长度为 4s,因此,动画的关键帧 50% 在 2s 之后:

//......
//when the animation starts....
setTimeout(function(){
      //Enter your stuff here
}, 2000); //2 seconds delay, considering your animation length = 4s;

您还可以使用(需要 jQuery):

$("#animated_element").bind("half_animation", function(){
      //Ya stuff here
});
//.........
//When the animation starts...
setTimeout(function()
{
     $("#animated_element").trigger("half_animation");
}, 2000);

或者:

$("#animated_element").bind("half_animation", function(){
      once = 0;
      setTimeout(function()
      {
           //Ya stuff here....
      }, 2000)
});
//........
//When the animation starts
$("#animated_element").trigger("half_animation");

我希望它能帮到你,伙计。

关于javascript - 我可以用 JavaScript 检测我们在 CSS 关键帧动画中的百分比明智吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480159/

相关文章:

javascript - 如果操作不正确则调用函数

javascript - 自动调整文本区域宽度(列)?

javascript - 网页开发: how to show all errors (make errors verbose)?

javascript - 调用时重置 jquery .click 函数

html - @keyframes 没有以预期的方式工作 CSS

javascript - 当紧接在 div 标签下方调用脚本时会发生什么?

javascript - html2canvas - 如何定义顶部、左侧、底部、右侧以进行自动裁剪?

css - SASS/CSS : :first-child selector not working

html - 动画 CSS 标签不适用于 ID,0% 到 100%

css - 从页面中心开始生长 "blast"光动画