首页 > 其他分享 >react框架下GSAP动画插件-ScrollTrigger的使用介绍

react框架下GSAP动画插件-ScrollTrigger的使用介绍

时间:2022-10-30 20:46:55浏览次数:66  
标签:ScrollTrigger 动画 插件 top 0.2 GSAP gsap snap

ScrollTrigger插件这个插件是基于GSAP使用的,ScrollTrigger仅仅是用来控制触发动画,而GSAP才是用来操作元素。

react框架使用ScrollTrigge,首先是引入ScrollTrigger

import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);

 ScrollTrigge相比于单纯的GSAP的使用,最大的好处在于可以控制动画的出现位置,可以让某个元素移动到页面的某个部分时才触发动画

例:

// css
body { overflow-x: hidden; }
// js let sections = gsap.utils.toArray(".panel"); gsap.to(sections, { xPercent: -100 * (sections.length -1), ease: "none", scrollTrigger: { trigger: ".container", //根据某个元素来触发动画 pin: Boolean | String | Element, //在元素活动时钉住元素的位置,效果类似于 position: sticky start: "top top", //起始点:当触发器顶部到达视口的顶部 end: "+=500", //结束点:从起始点滚动 500px 后 scrub: 1,//页面滚动时元素需要 1 秒才能“赶上”滚动条 markers,//将滚动的触发点在页面中标记出来 endTrigger,//根据元素结束动画 snap: { snapTo: "labels",
//捕捉到时间线中最近的标签 duration: {min: 0.2, max: 3}, // 捕捉动画时间最小值 0.2 秒最大值 3秒 (由速度决定) delay: 0.2, //在执行捕捉之前等待最后一个滚动事件 0.2 秒 ease: "power1.inOut" // 动画的运动曲线是"power3" snap:Number | Array | Function | Object | "labels" ,在用户停止滚动后捕获某些进度值(在0到1之间)。所以snap: 0.1会以0.1为增量进行snap(10%, 20%, 30%,等等)。snap:[0, 0.1, 0.5, 0.8, 1]只会让它停留在其中一个特定的进度值上.

还可以给滚动动画添加时间轴,构造连续的动画效果

例:

let tl = gsap.timeline({
    scrollTrigger: {
      trigger: ".container",
      pin: true,  
      start: "top top",
      end: "+=500", 
      scrub: 1, /
      snap: {
        snapTo: "labels", 
        duration: {min: 0.2, max: 3},
        delay: 0.2,g
        ease: "power1.inOut" 
      }
    }
  });
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");

我们可以不需要将 ScrollTriggers 直接放入动画中,而可以将回调用于任何事情

例:

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,动画,插件,top,0.2,GSAP,gsap,snap
From: https://www.cnblogs.com/AllenPan/p/16842162.html

相关文章

  • wordpress外贸跨境电商独立站WooCommerce插件安装教程
    如果想要搭建一个外贸独立站,可以使用wordpress配合WooCommerce插件实现电商功能下载插件这里可以去下面地址下载https://woo.weixiaoduo.com/download安装插件网站后......
  • Kotlin的语法糖太甜啦——开发MC插件遇到的坑
    最近在学习使用Kotlin开发PaperMC插件,遇到了一个大坑,不吐不快。PersistentDataType<T,Z>接口我们可以给物品或方块添加自定义的BNT标签,而这个接口定义的自定义标签的数......
  • Vscode插件推荐
    Vscode插件推荐主题/外观MaterialTheme(集成了多种主题皮肤,搭配MaterialIconTheme食用更佳)MaterialIconTheme(扁平化的主题图标库)vscode-icons(VSCode官方出......
  • Chrome扩展插件的开发--获取网页Cookies
    Chrome扩展插件的开发--获取网页CookiesChrome浏览器在浏览器类应用软件中一直居于榜首,很多人选择Chrome浏览器不仅仅是因为它的稳定,还有它丰富的可拓展性。那么有没有想......
  • React实用插件收集
    1、react-img-editor图片编辑demo:npminstallreact-img-editor-S引入和使用importReactImgEditorfrom'react-img-editor'import'react-img-editor/assets/in......
  • Vue3——自定义组件-插件
    Vue3自定义指令插件官网链接:https://cn.vuejs.org/guide/reusability/custom-directives.html#introduce1.自定义指令:1.1自定义指令声明局部声明:constfocus={......
  • Qt应用程序接口和插件的创建详细过程
    Qt应用程序接口:包含类定义的头文件(*.h),该类定义中一般只包含纯虚函数的声明。Qt应用程序插件:继承自指定类和接口的C++类,该类实现了接口中定义的纯虚函数。 ------------......
  • VScode必备插件
    VScode必备插件1、外观相关MaterialIconTheme-文件图标GithubDarkClassictheme-Github经典暗黑主题ChineseLanguagePack-中文翻译包2、前端相关Auto......
  • STARLIMS VSCode插件
    地址:https://github.com/mariuspopovici/starlimsvscode功能:EnterpriseDesigner(应用程序、数据源、服务器脚本和客户端脚本)的Explorer将STARLIMS代码的副本下载到......
  • Terraform 语法 provider插件
     语法是terraform最重要的一点,有两个部分来讲解,第一部分是基础,第二部分是更加高级的扩展。后面各种实践其实就是对terraform语法编写。第一部分是provider插件,provider提供......