哈喽 大家好,我是老鱼。
gzh:老鱼的储物柜
今天老鱼带领大家学习如何使用最少的代码创建令人叹为观止的滚动动画~
在聊ScrollTrigger
插件之前我们先简单了解下GSAP
。
GreenSock 动画平台 (GSAP) 可为 JavaScript 可以操作的任何内容(CSS 属性、SVG、React、画布、通用对象等)动画化,并解决不同浏览器上存在的兼容问题,而且比 jQuery快 20 倍。大约1000万个网站和许多主要品牌都在使用GSAP。
接下来大师兄带领大家一起学习ScrollTrigger
插件的使用。
ScrollTrigger
是基于GSAP
实现的一款高性能页面滚动触发HTML
元素动画的插件。
通过ScrollTrigger
使用最少的代码创建令人叹为观止的滚动动画。我们需要知道ScrollTrigger
是基于GSAP
实现的插件,ScrollTrigger
是处理滚动事件的,而真正处理动画是GSAP
,二者组合使用才能实现滚动动画~
active
类添加到触发元素中:toggleClass: "active"
CDN
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/ScrollTrigger.min.js"></script>
ES Modules
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
UMD/CommonJS
import { gsap } from "gsap/dist/gsap";
import { ScrollTrigger } from "gsap/dist/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
gsap.to(".box", {
scrollTrigger: ".box", // start the animation when ".box" enters the viewport (once)
x: 500
});
let tl = gsap.timeline({
// 添加到整个时间线
scrollTrigger: {
trigger: ".container",
pin: true, // 在执行时固定触发器元素
start: "top top", // 当触发器的顶部碰到视口的顶部时
end: "+=500", // 在滚动 500 px后结束
scrub: 1, // 触发器1秒后跟上滚动条
snap: {
snapTo: "labels", // 捕捉时间线中最近的标签
duration: {min: 0.2, max: 3}, // 捕捉动画应至少为 0.2 秒,但不超过 3 秒(由速度决定)
delay: 0.2, // 从上次滚动事件开始等待 0.2 秒,然后再进行捕捉
ease: "power1.inOut" // 捕捉动画的过度时间(默认为“power3”)
}
}
});
// 向时间线添加动画和标签
tl.addLabel("start")
.from(".box p", {scale: 0.3, rotation:45, autoAlpha: 0})
.addLabel("color")
.from(".box", {backgroundColor: "#28a92b"})
.addLabel("spin")
.to(".box", {rotation: 360})
.addLabel("end");
ScrollTrigger.create({
trigger: "#id",
start: "top top",
endTrigger: "#otherID",
end: "bottom 50%+=100px",
onToggle: self => console.log("toggled, isActive:", self.isActive),
onUpdate: self => {
console.log("progress:", self.progress.toFixed(3), "direction:", self.direction, "velocity", self.getVelocity());
}
});
接下来,我们一起来看使用ScrollTrigger
可以实现怎样的效果吧。
利用ScrollTrigger
可以实现很多炫酷的效果,还有更多示例及源代码,快去公众号后台回复滚动
获取学习吧!也欢迎同学们和大师兄讨论哦~
<p>进了前端门,便是一家人</p><p>原创不易,点赞、留言、分享就是大师兄写下去的动力!</p>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。