jQuery和Greensock动画——用classname动画屏幕上的所有元素
jQuery and Greensock animations -- animate all elements on screen with classname
我试图在我的页面上,一旦他们滚动到视图匹配类"customers"的所有元素动画。
当前版本:
$(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');
}
}
})
用于在第一个元素进入屏幕时使其动画化,不幸的是,结果也会在其他元素离开屏幕时使其动画化。我想要发生的是,当滚动到视图中时,每个与"customers"匹配的元素都会显示动画。
(注意,isOnScreen是一个自定义函数,用于在窗口内进行元素检测)。
我已经尝试使用jquery的每个函数如下:
$(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,但我不确定这是否会起作用。
好了,这就是我认为你需要做的。
- 当然,首先必须为
window
对象上的scroll
事件设置一个侦听器。 然后使用 - 当前的
.customers
元素,然后检查它是否在使用自定义函数.isonScreen()
定义的视口区域。 - 然后
TweenMax
将在当前循环的.customers
元素中找到的.customer
元素动画化。注意父元素.customers
和子元素.cusotmer
之间的区别。记住,我们在一个循环中,所以每个.customers
元素都是循环的,然后我们进一步尝试在每个.customer
元素中找到CC_15元素。帮助我们查找内部.customer
元素的jQuery是:接下来,在CSS中,opacity: 0;
行先前为.customer
元素注释掉了。我把它取消了。 - 然后我们使用
TweenMax
的.staggerFromTo
方法来定义一组初始属性来开始我们的渐变,并结束另一组属性,所有这些都在动画之间使用一点交错,这样它们就不会同时出现,也不会在下一个播放之前等待彼此完成。这是一个重叠动画。 另一件需要注意的事情是,我们正在动画元素的 - 最后,在当前循环的
.customers
元素上应用.animated
类。
each
循环遍历.customers
元素。然后你检查是否每个这些.customers
元素已经有一个animated
类。如果他们这样做,那么什么也不会发生;如果他们不这样做,其余的就会随之而来。y
属性,这是TweenMax
提供的一个特殊属性,它基本上是动画translateY(...)
属性的快捷方式,就像你使用CSS一样。$(window).on('scroll', function() {
$('.customers').each(function() {
if (!$(this).hasClass('animated')) {
if ($(this).isOnScreen(0.45, 0.45)) {
TweenMax.staggerFromTo($(this).find('.customer'), 0.3, {
y: 200,
opacity: 0
}, {
y: 0,
opacity: 1,
ease: Power2.easeOut
}, 0.15);
$(this).addClass('animated');
}
}
});
});
这里是小提琴。
相关文章:
- 我需要在javascript if语句中使用jquery来动画元素的颜色
- 添加/删除类和动画元素的不同方法
- 悬停时动画元素的 JavaScript 问题
- 动画元素不会在悬停时更改样式
- 在jquery中使用索引动画元素
- 应该为“容器”元素和“动画”元素分配什么位置属性?HTML CSS JavaScript.
- 动画元素角度不消失
- JS获取动画元素的当前位置
- jQuery幻灯片和停止问题:动画元素随着鼠标的快速移动而冻结
- 在视图中检测动画元素
- 鼠标悬停和鼠标移出不触发动画元素
- jQuery动画元素和隐藏
- 当你向下滚动然后向上滚动时如何动画元素
- 当动画元素接触鼠标时触发mouseenter
- 使用滑动回调和Jquery动画元素在幻灯片
- 我如何动画元素存储在一个数组?除了我徘徊在上面的那个
- 引导工具提示跟随动画元素
- 点击动画元素
- 使用jQuery动画元素并调用stop()
- 如何显示动画元素时,它是在查看区域