【发布时间】:2015-10-26 17:58:07
【问题描述】:
我正在运行一个触发 TweenMax 动画的滚动事件,我注意到,虽然它在 Chrome 上看起来不错,但在 Firefox 上存在相当大的延迟。有没有人有关于如何尽可能有效地处理这个滚动事件的建议?此外,我不知道 Firefox 的渲染是否有某些原因可能会导致这种情况?任何线索将不胜感激!
要点是我正在我的页面上寻找名为“customers”的容器,每个容器都包含三个单独的“customer”元素。当匹配“customers”的 div 滚动到视图中时,触发 TweenMax 动画,并添加一个名为“animated”的类,以防止元素随后重新动画。
这是一个基本演示的小提琴: http://jsfiddle.net/epp37jsq/
编辑
为了澄清,小提琴只演示了我的动画功能的行为。那里不会出现延迟,因为文件大小非常小。在实际站点上,我有 11 个组,每组 3 个“客户”。图像相同,但拉入了 33 次。未来,这些图像将是独一无二的。本质上,这 11 个组中的每一个都调用了动画。我正在寻找有关如何提高页面速度的建议。
还有我的代码:
var scrollTimer = null;
$(window).scroll(function () {
if (scrollTimer) {
clearTimeout(scrollTimer); // clear any previous pending timer
}
scrollTimer = setTimeout(handleScroll, 500); // set new timer
console.log("fired!");
});
function handleScroll() {
scrollTimer = null;
$('.customers').each(function() {
if (!$(this).hasClass('animated')) {
if ($(this).isOnScreen(0.45, 0.45)) {
TweenMax.staggerFromTo($(this).find('.customer'), 0.3, {
y: 50,
opacity: 0
}, {
y: 0,
opacity: 1,
ease: Power2.easeOut
}, 0.15);
$(this).addClass('animated');
}
}
});
}
【问题讨论】:
-
我看不到你的 jsFiddle 与 FireFox 有任何滞后。对我来说,它的运行方式似乎与 Chrome 相同。你在什么操作系统上?
-
我正在编辑我的帖子,提到小提琴只演示了这种行为。实际网站在 Firefox 上落后。
-
你试过 lagSmoothing() greensock.com/docs/#/HTML5/GSAP/TweenMax/static_lagSmoothing
-
我还没看到,我试试看,谢谢!
标签: javascript jquery firefox gsap