【发布时间】:2015-10-23 19:04:33
【问题描述】:
一旦滚动到视图中,我正在尝试为页面上与“客户”类匹配的所有元素设置动画。
我目前的版本:
$(window).on('scroll', function() {
if(!$('.customers').hasClass('animated')) {
if($('.customers').isOnScreen(0.45, 0.45)) {
TweenMax.staggerTo($('.customer'), 0.3, {bottom:"+=50px", opacity:1, ease: Power2.easeOut}, 0.15);
$('.customers').addClass('animated');
}
}
})
当第一个元素进入屏幕时,它会为第一个元素设置动画,不幸的是,当其他元素离开屏幕时,它们也会为它们设置动画。我想要发生的是,每个匹配“客户”的元素在滚动到视图时都会动画。
(注意 isOnScreen 是一个自定义函数,用于在窗口内进行元素检测)。
我尝试过使用 jquery 的 each 函数:
$(window).on('scroll', function() {
$('.customers').each(function( i ) {
if(!this.hasClass('animated')) {
if(this.isOnScreen(0.45, 0.45)) {
TweenMax.staggerTo($('.customer'), 0.3, {bottom:"+=50px", opacity:1, ease: Power2.easeOut}, 0.15);
this.addClass('animated');
}
}
})
我还尝试将每个“this”语句包装为一个 jquery 元素作为 $(this)。
我得到了意想不到的行为,即当我滚动时元素继续动画,即使它们应该已经删除了他们的“动画”类(我希望它们只在他们第一次进入屏幕时动画)。
我想我可能需要做的是创建一个客户数组,然后对数组中的每个元素执行 TweenMax,但我不确定这是否可行。
【问题讨论】:
-
你能创建一个这样的jsFiddle吗?如果没有演示,很难想象您真正想要做什么。
-
这里很难加载 greensock 库,但这是我的页面结构的要点:jsfiddle.net/jnstqchu/8
-
你能分享你的
.onScreen()函数吗?我看到TweenMax加载得很好。 -
this 是否与您要查找的内容相近?
标签: javascript jquery animation gsap