我得到了类似以下的内容,这是一个在两个图像之间交叉淡入淡出的 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
's opacity 被短暂设置为 1并在视觉上“出现” ,在动画可以从上一个正确状态恢复并继续之前。
这仅仅是一个 WebKit 错误,我无法避免,还是有一些棘手的方法来调整我的代码,以便可以处理初始帧的这种烦人的闪烁?