Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >膜拜!用最少的代码却实现了最牛逼的滚动动画!

膜拜!用最少的代码却实现了最牛逼的滚动动画!

原创
作者头像
程序员老鱼
发布于 2022-11-27 12:28:40
发布于 2022-11-27 12:28:40
3.2K00
代码可运行
举报
文章被收录于专栏:前端实验室前端实验室
运行总次数:0
代码可运行

哈喽 大家好,我是老鱼。

gzh:老鱼的储物柜

今天老鱼带领大家学习如何使用最少的代码创建令人叹为观止的滚动动画~

在聊ScrollTrigger插件之前我们先简单了解下GSAP

GreenSock 动画平台 (GSAP) 可为 JavaScript 可以操作的任何内容(CSS 属性、SVG、React、画布、通用对象等)动画化,并解决不同浏览器上存在的兼容问题,而且比 jQuery快 20 倍。大约1000万个网站和许多主要品牌都在使用GSAP。

接下来大师兄带领大家一起学习ScrollTrigger插件的使用。

插件简介

ScrollTrigger是基于GSAP实现的一款高性能页面滚动触发HTML元素动画的插件。

通过ScrollTrigger使用最少的代码创建令人叹为观止的滚动动画。我们需要知道ScrollTrigger是基于GSAP实现的插件,ScrollTrigger是处理滚动事件的,而真正处理动画是GSAP,二者组合使用才能实现滚动动画~

插件特点

  • 将任何动画链接到特定元素,以便它仅在视图中显示该元素时才执行该动画。
  • 可以在进入/离开定义的区域或将其直接链接到滚动栏时在动画上执行操作(播放、暂停、恢复、重新启动、反转、完成、重置)。
  • 延迟动画和滚动条之间的同步。
  • 根据速度捕捉动画中的进度值。
  • 嵌入滚动直接触发到任何 GSAP 动画(包括时间线)或创建独立实例,并利用丰富的回调系统做任何您想做的事。
  • 高级固定功能可以在某些滚动位置之间锁定一个元素。
  • 灵活定义滚动位置。
  • 支持垂直或水平滚动。
  • 丰富的回调系统。
  • 当窗口调整大小时,自动重新计算位置。
  • 在开发过程中启用视觉标记,以准确查看开始/结束/触发点的位置。
  • 在滚动记录器处于活动状态时,如将active类添加到触发元素中:toggleClass: "active"
  • 使用 matchMedia() 标准媒体查询为各种屏幕尺寸创建不同的设置。
  • 自定义滚动触发器容器,可以定义一个 div 而不一定是浏览器视口。
  • 高度优化以实现最大性能。
  • 插件大约只有6.5kb大小。

安装/引用

CDN

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";

gsap.registerPlugin(ScrollTrigger);

UMD/CommonJS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { gsap } from "gsap/dist/gsap";
import { ScrollTrigger } from "gsap/dist/ScrollTrigger";

gsap.registerPlugin(ScrollTrigger);

简单示例

代码语言:txt
AI代码解释
复制
gsap.to(".box", {
  scrollTrigger: ".box", // start the animation when ".box" enters the viewport (once)
  x: 500
});

高级示例

代码语言:txt
AI代码解释
复制
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");

自定义示例

代码语言:txt
AI代码解释
复制
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可以实现怎样的效果吧。

image.png
image.png
image.png
image.png

利用ScrollTrigger可以实现很多炫酷的效果,还有更多示例及源代码,快去公众号后台回复滚动获取学习吧!也欢迎同学们和大师兄讨论哦~

<p>进了前端门,便是一家人</p><p>原创不易,点赞、留言、分享就是大师兄写下去的动力!</p>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
膜拜!用最少的代码却实现了最牛逼的滚动动画!
ScrollTrigger是基于GSAP实现的一款高性能页面滚动触发HTML元素动画的插件。
程序员老鱼
2022/12/02
2.8K0
掌握Intersection Observer API,轻松实现实现图片懒加载、元素滚动动画、无限滚动加载等功能
Intersection Observer API 是浏览器提供的一个强大接口,用来异步观察一个元素是否进入(或者离开)另一个元素或视口(viewport)的可视范围。
watermelo37
2025/04/22
1150
掌握Intersection Observer API,轻松实现实现图片懒加载、元素滚动动画、无限滚动加载等功能
gsap
GSAP 是一个与框架无关的JavaScript 动画库,可将开发人员变成动画超级英雄。构建适用于所有主要浏览器的高性能动画。动画 CSS、SVG、canvas、React、Vue、WebGL、颜色、字符串、运动路径、通用对象…任何 JavaScript 可以触及的内容! GSAP 的ScrollTrigger插件以最少的代码提供令人惊叹的基于滚动的动画。 gsap.matchMedia()使构建响应式、易于访问的动画变得轻而易举。
阿超
2024/11/24
1130
轻量级滚动动画JavaScript库aos.js
aos.js是一款效果超赞的页面滚动的 JavaScript 动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。
Abalone
2022/07/14
2.1K0
轻量级滚动动画JavaScript库aos.js
Lottie-页面动画100%硬核还原
被设计师折磨一顿后,大师兄找到了解决这个困境的方案。它就是今天的主角:Lottie
程序员老鱼
2022/12/02
1.1K0
新鲜出炉的个人主页开源 最好看的
github:https://github.com/yigehaozi/renhuang-home
用户1287596
2024/10/07
1260
gsap+ScrollTrigger,打造震撼滚差视觉!
友儿
2024/08/14
5310
压轴css——苹果百万级别滚动页面特效
首先,将每一块芯片截出每一帧的图像,然后用到css中的固定定位:"position: fixed"。
淼学派对
2023/10/14
4100
压轴css——苹果百万级别滚动页面特效
效果惊艳的开源动画库,不仅牛逼,还很小巧
大家好,我是前端实验室的大师兄!一名资深的互联网玩家,专注分享大前端领域技术、面试宝典、学习资料等~
程序员老鱼
2022/12/02
1.2K0
Framer 滚动动画效果集合 (讲解)
滚动动画在我们浏览一些网站的时候经常看到(苹果官网,oppo官网,等等). 但是我们今天不是讲如何使用代码来实现,而是讲一下在Framer 里面如何实现. 且非常容易就可以实现酷炫的滚动动画效果, 给网站添加丰富的视觉和交互体验.
心安事随
2024/07/29
2090
Framer 滚动动画效果集合 (讲解)
使用GSAP库打造酷炫网页文字动画效果
GSAP,全称GreenSock Animation Platform,是一个高性能的JavaScript动画库。它可以让你在网页上轻松创建高效、流畅的动画效果。GSAP的优势在于它的简洁性、灵活性和强大的功能,可以兼容各种浏览器,并且有丰富的文档和示例。
前端达人
2024/06/27
4700
使用GSAP库打造酷炫网页文字动画效果
这是我见过最牛逼的滑动加载框架
在手机端实现下拉刷新和下拉加载是最常见不过的需求了。今天大师兄就给大家分享一个非常精致的js框架:mescroll.
程序员老鱼
2022/12/02
2.1K0
📚一站式解决:H5开发全攻略,看这篇让你省时又省力
在 H5 中,我们通常会使用 REM 和 VW 这两种单位来实现页面的响应式布局。这两种单位可以让页面元素的大小随着根元素(对于 REM)或视口宽度(对于 VW)的大小变化而变化,从而适应不同尺寸的屏幕。
linwu
2023/07/27
1.1K0
gsap的ScrollTrigger让你的页面更炫酷
设置了的start: 'top top'后,可以看到marker的scroller-start和scroller-end都在视口的顶部。
治电小白菜
2024/12/29
4920
gsap的ScrollTrigger让你的页面更炫酷
革命性创新,动画杀手锏 @scroll-timeline
在 CSS 规范 Scroll-linked Animations 中,推出了一个划时代的 CSS 功能。也就是 -- The @scroll-timeline at-rule,直译过来就是滚动时间线。
Sb_Coco
2022/03/10
1K0
革命性创新,动画杀手锏 @scroll-timeline
无比强大的图片裁剪工具库!牛X!
最近项目中入手了一个非常实用的插件,这里和大家一起分享下:通过canvas实现图片裁剪的工具--cropper.js
程序员老鱼
2022/12/02
2.1K0
kissui.scrollanim页面滚动动画库插件
kissui.scrollanim是一款实用的纯JS和CSS3页面滚动动画库插件。通过该插件可以使元素进入浏览器视口的时候,展示指定的CSS3动画效果。
用户4006703
2018/11/24
1.3K0
requestAnimationFrame实现单张图片无缝持续滚动
在很久以前,有写过一个使用 js 实现单张图片持续滚动图片的 代码,但那一版实现会持续操作DOM,向DOM中插入元素,性能较差,最近发现 requestAnimationFrame 通过 动画的方式实现图片滚动更加方便,遂重新实现了一版,效果更赞,性能更好。
蓓蕾心晴
2022/05/09
3.6K0
requestAnimationFrame实现单张图片无缝持续滚动
除了Animate,还有它!
Animate 是目前最通用的CSS3 动画库。但今天,大师兄要给大家推荐另一款非常简单和优雅的支持CSS3动画的JavaScript库:Move.js
程序员老鱼
2022/12/02
1.2K0
✨从响应式讲起,Observable:穿个马甲你就不认识啦?(附实战)
本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究!
掘金安东尼
2022/11/16
1.2K0
✨从响应式讲起,Observable:穿个马甲你就不认识啦?(附实战)
推荐阅读
相关推荐
膜拜!用最少的代码却实现了最牛逼的滚动动画!
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验