横幅上的动画淡出失败,主要是在Chrome上

时间:2015-11-03 20:24:37

标签: javascript css google-chrome animation

在Chrome上,当在动画期间切换到选项卡/窗口时,动画将被中断,使横幅变亮,直到下一个定时帧切换。这只发生在Chrome上。

在任何浏览器上,快速切换帧都会导致相同类型的故障。

另外,它似乎偶尔会陷入第2帧(大多数只是在Chrome中)

我已经尝试在动画正在进行时锁定动画,将点击事件切换切换为延迟0.5秒(动画的长度)的定时事件...这大部分修复了第二个问题,但不是理想(延迟是令人愤怒的)。

这是Chrome的错误吗?或者更有可能的是,我做错了什么?

这是每5秒激活一个新横幅的功能。最初,所有横幅都先消失了,但我试图解决这个问题,试图解决我原先认为可能存在的问题。

function activate_banner(banner_id) {
    fadeIn(banners[banner_id]);
    for (var i = 0; i < banner_iter.length; i++)
    if (banner_ids[i] != banner_id) fadeOut(banners[banner_iter[i]]);
}

淡入非常简单:

el.style.display = "";
el.style.zIndex = "1";
el.style.transition = "opacity 0.5s linear 0s";
el.style.opacity = 1;

淡出使用事件侦听器来隐藏框架的div:

if (el.style.display == "none") return;

el.style.zIndex = "99";
el.style.transition = "opacity 0.5s linear 0s";
el.style.opacity = 0;

var transitionEvent = whichTransitionEvent(el);
if (el.addEventListener) transitionEvent && el.addEventListener(transitionEvent, function () {
    el.style.display = "none";
});
else transitionEvent && el.attachEvent(transitionEvent, function () {
    el.style.display = "none";
});

https://jsfiddle.net/1keo62ca/8/

0 个答案:

没有答案