首页 > 其他分享 >膜拜!用最少的代码却实现了最牛逼的滚动动画!

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

时间:2023-08-04 23:44:31浏览次数:26  
标签:ScrollTrigger 动画 插件 滚动 膜拜 gsap GSAP

大家好,我是程序视点的小二哥!今天小二哥带领大家学习如何使用最少的代码创建令人叹为观止的滚动动画~

在聊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

<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可以实现很多炫酷的效果,还有更多示例及源代码,欢迎查阅官网哦~

标签:ScrollTrigger,动画,插件,滚动,膜拜,gsap,GSAP
From: https://www.cnblogs.com/tanggoahead/p/17607298.html

相关文章

  • 2023-08-04 uniapp之scroll-view无法横向滚动
    解决方案:给scroll-view设置样式white-space:nowrap然后scroll-view里面的子项要设置样式为display:inline-block;接着scroll-view的属性scroll-x要设置为truescroll-x="true"如果这都不出现滚动,那么原因可能有二:1.scroll-view的宽度大于或等于父级的宽度,解决方......
  • html滚动示例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>滚动测试</title><scriptsrc="https://code.jquery.com/jquery-3.7.0.min.js"crossorigin="anonymous"......
  • el-table表头高亮动画效果
    el-table表头高亮动画效果<divclass="front-table"><el-table:data="tableData"height="100%"stripe:header-cell-style="{backgroundC......
  • uniapp 之h5修改全局滚动条(浏览器下滑有小矩形滚动条)
    在index.html文件里<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,user-scalable=no,initial-......
  • ThreeJs实现简单的动画
    上一节实现可用鼠标控制相机的方式实现动态效果,但很多时候是需要场景自己产恒动态效果,而不是通过鼠标拖动,此时引入一个requestAnimationFrame方法,它实际上是通过定时任务的方式,每隔一点时间改变场景中内容后重新渲染一遍,间隔时间短的话视觉上就显示出连续的动画效果,Js本身也自带定......
  • AN---眨眼动画
    最近在学习用AN做动画,记录一下眨眼动画的制作。方案一:首先做一个眨眼动画元件,但是如果直接使用该动画元件,就会发现,他会一直眨眼,不会停顿。此时解决方法是:在做一个元件,在这个元件里面嵌套眨眼动画元件,在这个元件里面给时间间隔。插入关键帧,然后通过播放单帧和循环【眨眼动画】来控......
  • 9 个免费的 AI 动画工具:让图像栩栩如生
    有一些非常简单的方法可以使你的中途图像(你也可以使用其他替代平台来生成AI图像)对于社交媒体创建AI电影或只是为了好玩更有趣,可以使它们更加身临其境,让他们说话(甚至添加自己的声音)所有这些都可以完全免费完成,这些技术中的每一种都不到02分钟。其中一些只需要几秒钟,ir就不必是AI图......
  • 9 个免费的 AI 动画工具:让图像栩栩如生
    有一些非常简单的方法可以使你的中途图像(你也可以使用其他替代平台来生成AI图像)对于社交媒体创建AI电影或只是为了好玩更有趣,可以使它们更加身临其境,让他们说话(甚至添加自己的声音)所有这些都可以完全免费完成,这些技术中的每一种都不到02分钟。其中一些只需要几秒钟,ir就不必是AI......
  • swiper 设置 autoHeight: true, 第一个swiper下拉后,切换到第二个swiper后,滚动条不置
    给swiper添加事件on:{slideChangeTransitionEnd:function(swiper,index){document.documentElement.scrollTop=0;//Formodernbrowsersdocument.body.scrollTop=0;//Forolderbrowsers*///强制body置顶,}}目前只找到这种方法,这种......
  • After Effects 2023 - 视频特效和动画制作软件mac/win版
    AfterEffects2023是一款功能强大的视频合成和特效制作软件,它被广泛用于电影、电视、广告和网络视频等领域。在这800字的介绍中,我将向您详细说明AfterEffects2023的特点、功能和优势。点击获取AfterEffects2023 首先,AfterEffects2023提供了一个直观而强大的界面,使......