首页 > 其他分享 >非常强大的gsap动画

非常强大的gsap动画

时间:2023-02-03 10:15:23浏览次数:55  
标签:box 动画 top 强大 gsap duration true

非常好用的动画库gsap 

官网 https://greensock.com/

为啥要使用gsap

1. 非常方便的语法 比如下面例子(简单吧)

// 让 div 容器在一秒内水平移动 100 px to 去到哪
gasp.to('.item', { duration: 1, x: 100 }) // duration动画持续的时间
// from很好理解就是来自哪

gsap.from('.item', { duration: 1, x: 100});
gsap.fromTo('.item', // 这个就是从哪到哪好理解吧
  {
    opacity: 0,
  },
  {
    opacity: 0.8,
    duration: 1,
    ease: "elastic", // 动画曲线
  },
);

2.涵盖面广 不同于一般的动画库这个动画库几乎能操作你能想到的大多元素(特别的健全)比如: 3D模型(可以看我的另一篇文章threejs就是那gsap来操作3D模型)、svg 、画布、css属性 ……

3.兼容性好 因为它是js动画 几乎能解决大多数浏览器兼容性  

4.非常的灵活 几乎可以处理所有页面上可以通过JS进行改变的元素 对对于动画的操控可以非常高程度的自定义

5.非常好用的线性动画 (你还记得苹果官网或者 各大手机厂商的官网产品那种炫技的网站 根据滚轮来完成动画的每一帧的变化特别的酷炫)自己做过该线性动画知道这种每一帧都由滚轮触发 有多不好      做 ,但是gsap帮你封装好了直接用 就好了 (具体代码看下面案例)

6.速度快。GSAP专门优化了动画性能,使之实现和CSS一样的高性能动画效果

7.轻量与模块化。模块化与插件式的结构保持了核心引擎的轻量,TweenLite包非常小(基本上低于7kb)。GSAP提供了TweenLite, TimelineLite, TimelineMax 和 TweenMax不同功能的动画模块,你可以按需使用。

8..这个库是真的推荐花事件去好好看看文档的 

基本使用  

1. 下载npm install gsap

案例1切换组件的时候进行动画切换(下面可以是v-if 你可以换成路由切换啥的 )

<template>
  <div>
    <button @click="flag = !flag">点击切换</button>
// transition除了常见的class类写法还要函数写法 @enter 进入 @befor-enter 进入之前 @after-enter 进入之后
// @leave离开的时候 当然也有 离开后 离开前 <transition @enter="enterHandle" appear> <div v-if="flag" class="box">11</div> <div v-else class="box2">222</div> </transition> </div> </template> <script lang="ts" setup> import { ref } from 'vue' // 引入 import { gsap } from "gsap"; const flag = ref<boolean>(true) const enterHandle = (el: Element): void => { console.log('我在进来的时候触发'); gsap.fromTo(el, { // 就是在进入的时候从小变大 height: '0px', width: '0px' }, { height: '200px', width: '200px' }) } </script> <style scoped> .box, .box2 { width: 200px; height: 200px; background-color: pink; } .box2 { background-color: skyblue; } </style>

 案例2 滚动页面触发线性动画

1.引入

import { gsap } from 'gsap'
import { ScrollTrigger } from 'gsap/ScrollTrigger'

2.把滚动插件引入到gsap动画中

gsap.registerPlugin(ScrollTrigger)

3.然后你就可以定义动画了

 // 从哪来的
    gsap.from('.newsRight', {
      // 页面滚动开始触发
      scrollTrigger: {
        // 目标
        trigger: ".newsRight",
        // 开始位置 
        // start: "top center",
        // 结束位置
        // 定住锚点位置
        pin: ".box",
        // end: "top 100px",
        // 这个就是根据页面滚动而触发动画
        scrub: true, // 0.5, 以秒计算
        // 是否展示开始结束位置
        // markers: true
      },
      duration: 2,
      x: 300,
    });

4.甚至你可以定义多个元素的线性动画

 gsap.from('.tasks', {
        // // 页面滚动开始触发
        scrollTrigger: {
          //   // 目标
          start: "top 100",
          trigger: ".tasks",
          pin: ".task-container",
          scrub: true, // 0.5, 以秒计算
        },
        duration: 5,
        // opacity: 0,
        y: (index, target) => {
          return index % 2 ? -310 : 1 // 自己瞎写的想要怎么动可以自己算一下 我这个盒子刚好能凑一块
        },
        x: (index, target) => {
          return index < 4 ? 294 : -294 // 我这个刚好能把几个盒子怼在一起 大家想玩玩其他的可以自己算算
        },
      });

还能定义一些高级事件

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");

强烈 推荐去官网看看那些官网的demo才能体会到这个库的强大 

如果你近期想要做一个炫技网站 记得这个库 绝对值

 

标签:box,动画,top,强大,gsap,duration,true
From: https://www.cnblogs.com/qiaomucreate/p/17087813.html

相关文章

  • 一个强大、支持100多种格式.Net图片操作库
    更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变、图片合并、格式转换、添加水印等,自己开发都需......
  • jQuery-动画 jQuery-遍历
    jQuery-动画 三种方式显示和隐藏元素1.默认显示和隐藏方式1.show([speed,[easing],[fn]])1.参数:1.speed:动画的速度。......
  • 专访三维空间雷成老师 | 原来水墨画风格的3D建筑动画可以如此惊艳……
    CGarchitect是业界赫赫有名的国际3D建筑赛事,2005年首次举办至今已成功举办了17届大赛,每年都吸引了全球许多知名的建筑设计工作室、动画工作室、艺术家及学生参赛。2021年......
  • 专访三维空间雷成老师 | 原来水墨画风格的3D建筑动画可以如此惊艳……
    CGarchitect是业界赫赫有名的国际3D建筑赛事,2005年首次举办至今已成功举办了17届大赛,每年都吸引了全球许多知名的建筑设计工作室、动画工作室、艺术家及学生参赛。2021年的......
  • jQuery_6_动画效果
     使得页面具有良好的交互性。 零、动画设置1、时间slow、normal、fast、毫秒数。2、暂停暂停指定元素正在执行的动画。//暂停id为div_1的标签正在运行......
  • css渐变动画
    鼠标放上去渐变div{width:100px;transition:width2s;-moz-transition:width2s;/*Firefox4*/-webkit-transition:width2s;/*Safari和Chrome*/-o-tran......
  • JQuery动画
    动画1.三种方式显示和隐藏元素1.默认显示和隐藏方式1.show([speed],[easing],[fn]]):显示1.参数:1.speed:动画的速度。三个......
  • CSS边框渐变发光动画特效
    动画演示CSS代码 @property--rotate{syntax:"<angle>";initial-value:132deg;inherits:false;}:root{--card-height:65vh;--card-width:calc(var(--c......
  • Qml中使用动画Animation
    Animation是Qml中所有动画类的基类。Qml中动画的分类PropertyAnimation:改变控件的属性来产生动画。NumberAnimation:专门改变数字类型的动画,效率优于PropertyAnimation......
  • 使用Blender导出多个动画的GLTF模型
    准备工作:安装Blender准备好多套fbx格式的模型动画首先,加载进来模型。加载图片,将模型名称和动画名称都修改成相应的动作名称点击左下角按钮,切换到非线性动画在列表内会发现......