我有一个svg
构成我的horizontal
滚动条的基础。
在此范围内svg
,我已将类添加.animate
到要在项目出现时淡入淡出的元素中。.animate 类供参考已添加到 .animate 中的所有文本项中svg
。
目前,只有.animate
最初在视图中的元素才会淡出。当我向下滚动以继续滚动时,其他元素是静态的。他们没有translating
以任何方式淡入或上升或下降?
TL; DR,这就是我想要实现的目标:
- 当滚动条固定到位,并且用户继续向下滚动时,开始逐渐消失
.horizontalScroller__intro
。 - 一旦
.horizontalScroller__intro
消失,开始水平滚动.horizontalScroller__items
- 我的滚动条中任何具有类的元素
.animate
都将淡入到其原始位置。
注意:我了解在此处发布代码的 SO 规则和偏好。但是,我的演示包含一个长度 SVG,我无法在此处发布,因为它超出了 SO 的字符限制。
从scrollTrigger 文档中,containerAnimation
有助于在水平滚动条上实现动画,也是我试图实现的。
但是,在我上面的演示中,我遇到了以下问题:
.horizontalScroller__intro
最初不显示,何时应该,并且应该在滚动时淡出。- 水平滚动条不再起作用
- 视图中的
.animate
元素不会淡出
如果我使用timeline
(见下面的片段),那么介绍会淡出并且滚动条可以工作。但是,不在子元素中设置动画,这是我需要的containerAnimation
$(function() {
let container = document.querySelector(".horizontalScroller__items");
let tl = gsap.timeline({
scrollTrigger: {
trigger: ".horizontalScroller",
pin: ".horizontalScroller",
anticipatePin: 1,
scrub: true,
invalidateOnRefresh: true,
refreshPriority: 1,
end: '+=4000px',
markers: true,
}
});
tl.to('.horizontalScroller__intro', {
opacity: 0,
})
tl.to(container, {
x: () => -(container.scrollWidth - document.documentElement.clientWidth) + "px",
ease: "none",
})
});
我正在努力寻找一种方法来让介绍淡入、滚动条水平滚动以及.animate
元素淡入或淡入。
编辑:
@onkar ruikar,请参阅下面基于您的沙箱的注释:
- 当您向下滚动并进入视图时,我希望初始
.animate
元素向上滚动到视图中(当前,一旦文本消失,然后水平滚动条开始工作,只有这样.animate
应该在视图中的元素才会消失在上 .animate
加载初始元素后.animate
,作为滚动条一部分的下一个元素不会淡入。它们是静态的。当每个.animate
元素进入视野时,它应该淡入淡出(我认为它当前触发一次,对于所有元素)。
在此处查看视觉效果:
在上面的 gif 中,你可以看到前两个文本块是隐藏的,一旦它们出现,我希望它们淡出。然后第三和第四个文本块是静态的,当用户滚动到该部分时它们应该淡出。