javascript - CSS 动画播放状态问题 : Animation jumps back to initial frame when resumed?

标签 javascript css animation webkit css-animations

我得到了类似下面的东西,这是一个在两个图像之间交叉淡入淡出的 CSS 动画:

HTML

<div id="bg">
    <img src="bg_01.jpg">
    <img src="bg_02.jpg">
</div>

CSS

body {
    background: black;
    overflow-y: hidden;
}
#bg {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
img {
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
}
img:last-child {
    -webkit-animation: test 30s infinite alternate;
}
@-webkit-keyframes test {
    from {
        opacity: 1;
    }
    to {
        opacity: 0;
    }
}

还有一个像这样的 JavaScript 片段可以周期性地打开和关闭动画:

JavaScript

var state = 'running';

setInterval(function() {
    $('img:last-child').css({
        '-webkit-animation-play-state': state
    });

    state === 'running' ? state = 'paused' : state = 'running';
}, 1000);

问题是,当动画恢复时(“暂停”->“运行”)可能会出现一些显示故障,并且这种情况取决于您运行页面所针对的设备类型.

如果您在某些最先进的机器上运行该页面,事情看起来会很顺利;然而,如果您切换到另一个浏览器选项卡,然后切换回来,您可能会看到您的动画非常明显地从动画中间跳回到第一帧(即 img:last -child 的不透明度突然回到 1) 并重新开始。

另一方面,如果您在较弱的设备上运行,您可以在不切换浏览器选项卡的情况下看到故障:几乎每次动画恢复时,img:last- 都会有一个闪烁的时刻child 的不透明度被短暂设置为 1 并在视觉上“出现”,然后动画可以从其最后的正确状态恢复并继续。

这仅仅是一个 WebKit 错误,我无法避免,还是有一些巧妙的方法来调整我的代码,以便可以处理初始帧的这种恼人的闪烁?

最佳答案

在 java 脚本中更改条件值。不要使用播放状态。仅在超时 1000s 时使用 pasued 状态...

关于javascript - CSS 动画播放状态问题 : Animation jumps back to initial frame when resumed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627732/

相关文章:

javascript - 在 ie8 中用日语字符模拟文本区域的 maxlength-

javascript - 我可以在哪里放置此计数器变量以使其正确递增?

javascript - 设置要打印的PDF而不是网页?

css - Google Chrome 不是曾经有一个非常好的工具来模拟其他浏览器吗?它去哪儿了?

html - div 行为上的颜色叠加

javascript - 响应式(Reactive)表单验证 : unable to change state to valid

javascript - angular,访问 ng-view 包装 div 之外的范围

android - 动画 fragment 和返回堆栈

javascript - 动画不起作用后的 jquery 切换类

animation - 使用带有两个嵌套循环的 LaTeX animate 和 Tikz