使用GSAP创建惊艳的动画效果(一)

news2025/1/11 12:41:47

目录

  • GSAP简介
  • GSAP的语法
    • 方法
    • 目标
    • 变量
      • transform(变换)
      • 其它属性
  • vue中使用GSAP
    • 安装GSAP
    • 引用GSAP
    • 使用GSAP

GSAP简介

  1. GSAP是一个非常流行的js动画库,被广泛用于创建跨浏览器和跨平台的高性能动画。它的主要特点包括:
  • 提供丰富的属性和方法,可用于创建复杂的动画效果。
  • 兼容各种浏览器和设备,确保动画在不同环境下保持一致性。
  • 提供流畅的动画效果,避免了常见的卡顿和闪烁问题。
  • 具有强大的可定制性,可以根据项目需求进行个性化的动画设计。

GSAP的语法

GSAP语法由三部分组成,分别是方法、目标和变量,其调用格式为gsap.to( “.box” ,{ x:200 })各部分含义如下图所示:
在这里插入图片描述

方法

GSAP提供了四种类型的Tween方法,“Tween”(补间动画)是GSAP的核心概念。Tween是指在一段时间内逐渐改变元素的属性值,从而实现平滑的动画效果。

  1. gsap.to():这是GSAP中最常用的方法之一,用于从当前属性值过渡到目标属性值。可以指定动画的持续时间、延迟时间、缓动函数等参数。
gsap.to('.box', {
        x: 200,
        y: 100,
        duration: 1,
        repeat: 2,
        yoyo: true,
        delay: 0.5,
        ease: 'power1.out',
 });

在这里插入图片描述
2. gsap.from():与gsap.to()类似,但是它从指定的属性值开始过渡到当前属性值。

  gsap.from('.box', {
        opacity: 0,
        duration: 1,
        delay: 0.5,
        ease: 'power2.inOut',
  });

在这里插入图片描述
3. gsap.set():用于将元素的属性值设置为指定的值,没有动画效果。
4. gsap.fromTo():结合gsap.from()和gsap.to()的功能,可以同时设置起始值和目标值,实现更复杂的动画效果。

  gsap.fromTo('.box',
        {
          opacity: 0,
          x: -100,
        },
        {
          opacity: 1,
          x: 100,
          duration: 1,
          delay: 0.5,
          ease: 'power3.inOut',
        }
);

在这里插入图片描述

目标

目标是我们想要赋予动画效果的元素,在使用GSAP动画库时,我们需要指定那个元素要实现动画效果;在GSAP的内部,它封装了document.querySelectorAll()方法,因此我们可以使用类似".class"和"#id"选择器来指定目标。也可以传入一个变量,甚至是一个数组来指定目标。

  1. 使用类或ID选择器指定目标
gsap.to(".box", { x: 200 });
  1. 使用复杂的css选择器指定目标
gsap.to("section > .box", { x: 200 });
  1. 使用变量指定目标
let box = document.querySelector(".box");
gsap.to(box, { x: 200 })
  1. 使用数组指定目标
let square = document.querySelector(".square");
let circle = document.querySelector(".circle"); 
gsap.to([square, circle], { x: 200 })

变量

变量于存储和操作动画的属性值,它是一个对象,包含了有关动画的所有信息;包括transform、repeat、yoyo、delay、ease、stagger等各种动画属性;

transform(变换)

在CSS中,如果我们需要实现transform效果,需要这样写:
transform: rotate(360deg) translateX(10px) translateY(50%);
但是,在GSAP中使用transform非常简单,上面的CSS代码在GSAP中我们只需要这样写就可以了
{ rotation: 360, x: 10, yPercent: 50 }

GSAPCSS说明
x:100transform: translateX(100px)水平移动(以像素或SVG单位)
y:100transform: translateY(100px)垂直移动(以像素或SVG单位)
xPercent: -50transform: translateX(-50%)水平移动(元素宽度的百分比)
yPercent: -50transform: translateY(-50%)垂直移动(元素宽度的百分比)
rotation: 360transform:rotate(360deg)旋转(角度)
scale: 2transform:scale(2, 2)缩放
transformOrigin: “0% 100%”transform-origin: 0% 100%;平移的中心点,这将围绕左下角旋转
示例:
 gsap.to(box.value, {
      duration: 1,
      x: 200,
      y: 200,
      opacity: 0.5,
      rotation: 180, // 旋转角度 
    }); 

上面的代码使box元素在x方向移动200px,y方向移动200px,同时改变透明度为0.5,旋转180度
在这里插入图片描述

其它属性

属性说明
duration动画的持续时间(秒)默认值:0.5
delay动画开始之前的延迟时间(秒)
repeat动画重复的次数
yoyo如果为true,则在每次重复时,Tween将以相反的方向运行(类似于摇摆效果)。默认值:false
stagger每个目标动画之间的时间间隔(以秒为单位)(如果提供了多个目标)
ease控制动画过程中的变化速率,默认值为"power1.out"
onComplete当动画完成时运行的函数。
示例
gsap.to(".box", { 
  rotation: 360,
  x: '100vw',
  xPercent: -100, 
  duration: 2,  
  repeat: 2, 
  yoyo: true,
});

在这里插入图片描述

vue中使用GSAP

安装GSAP

要在vue中使用GSAP,我们需要先安装GSAP包

npm install gsap
或者
yarn add gsap

引用GSAP

使用import引入GSAP
import { gsap } from 'gsap'

使用GSAP

  1. 首先在模板中定义一个div
    <div class="box"></div>
  2. style中设置样式
.box {
  width: 100px;
  height: 100px;
  background-color: red;
}
  1. 在script中调用GSAP方法
 gsap.to('.box', { 
      x: 200,
      y: 200,
      opacity: 0.5,
      rotation: 180, // 旋转角度 
});

运行代码,刷新浏览器,可以看到动画已经实现了
在这里插入图片描述
好了,关于GSAP库的应用今天就先到这里,小伙伴们有疑问可以评论区留言,咱们下次聊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2中年份季度选择器(需要安装element)

调用 <!--父组件调用--><QuarterCom v-model"quart" clearable default-current/> 组件代码 <template><div><span style"margin-right: 10px">{{ label }}</span><markstyle"position:fixed;top:0;bottom:0…

人工智能安全-2-非平衡数据处理(2)

5 算法层面 代价敏感&#xff1a;设置损失函数的权重&#xff0c;使得少数类判别错误的损失大于多数类判别错误的损失&#xff1b; 单类分类器方法&#xff1a;仅对少数类进行训练&#xff0c;例如运用SVM算法&#xff1b; 集成学习方法&#xff1a;即多个分类器&#xff0c;然…

【Java 基础篇】Java网络编程实时数据流处理

在现代计算机应用程序中&#xff0c;处理实时数据流是一项关键任务。这种数据流可以是来自传感器、网络、文件或其他源头的数据&#xff0c;需要即时处理并做出相应的决策。Java提供了强大的网络编程工具和库&#xff0c;可以用于处理实时数据流。本文将详细介绍如何使用Java进…

Android之AMessage机制存/取原理(四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

从零学习开发一个RISC-V操作系统(三)丨嵌入式操作系统开发的常用概念和工具

本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDB&#xff08;The GNU Project Debugger&#xff09;1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&#xff0c;计划从RISC…

Gnuplot:安装与使用备忘

异常信息 问题起源于 signalp-4.1 调用 gnuplot 进行画图&#xff0c;在画图的时候提示不支持 png 格式结果&#xff1a; $ gnuplotG N U P L O TVersion 5.0 patchlevel 0 last modified 2015-01-01Copyright (C) 1986-1993, 1998, 2004, 2007-2015Thomas Williams, Coli…

服务网格的工作原理:解析服务网格的核心组件和通信模式

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

实用!Python大型Excel文件处理:快速导入、导出与批量处理

Python 是一种功能强大的编程语言&#xff0c;它提供了丰富的库和工具&#xff0c;使得处理大型 Excel 文件变得容易和高效。下面将介绍如何使用 Python 快速导入、导出和批量处理大型 Excel 文件。下面是一些建议和实践经验&#xff0c;希望能对你有所帮助。 一、Excel 文件处…

【C语言】求一个整数的二进制序列中1的个数的三种方法

方法一&#xff1a;逐位%2法 该方法的初步测试代码如下: int NumberOf1(int n) {int count 0;while (n){if (n % 2 1){count;}n n / 2;}return count; } 众所周知&#xff0c;数据在内存里以补码的形式存储&#xff0c;这是为了简化计算机的结构设计&#xff0c;同时也提…

SpringBoot集成Prometheus实现监控

SpringBoot配置Prometheus pom.xml 引入监控以及prometheus依赖 <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springfram…

Excel——时间戳与标准北京时间的互相转换

一、背景 在excel中将13位毫秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd hh:mm:ss.000)&#xff0c;使用如下模板 TEXT(<source_cell>/1000/8640070*36519,"yyyy-mm-dd hh:mm:ss.000") 在excel中将10位秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd h…

【华为云云耀云服务器L实例评测】- 云原生实践,快捷部署人才招聘平台容器化技术方案!

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

WebGL 选中一个表面

目录 选中一个表面 示例程序&#xff08;PickFace.js&#xff09; 代码详解 示例效果 选中一个表面 ​​​​​​​WebGL 选中物体_山楂树の的博客-CSDN博客可以使用同样的方法来选中物体的某一个表面。这一节在PickObject程序的基础上编写了PickFace程序&#xff0c;后…

计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

docker安装使用xdebug

docker安装使用xdebug 1、需要先安装PHP xdebug扩展 1.1 到https://pecl.php.net/package/xdebug下载tgz文件&#xff0c;下载当前最新稳定版本的文件。然后把这个tgz文件放到php/extensions目录下&#xff0c;记得install.sh中要替换解压的文件名&#xff1a; installExtensio…

uniapp 离线打包 plus.runtime.install 安装页面不弹起

uniapp 离线打包 plus.runtime.install 安装页面不弹起 updateVersion(webview : any, eventTitle : string, eventContent : string) {const loading plus.nativeUI.showWaiting(准备下载);var dtask plus.downloader.createDownload(eventContent,{method: GET,timeout: 5…

银行存款问题:整存零取

整存零取月息为0.63%&#xff0c;每年底取出1000&#xff0c;五年刚好取完&#xff0c;计算最初存入金额。 (本笔记适合基本熟悉一门编程语言的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程…

Ae 效果:CC Wide Time

时间/CC Wide Time Time/CC Wide Time CC Wide Time &#xff08;CC 宽泛时间&#xff09;能够将前后不同时间的帧叠加在一起&#xff0c;从而创建移动物体的运动轨迹&#xff0c;实现重影、运动模糊、光影跟随等效果。 可以配合其它的效果使得本效果有更多的可控性。 比如&…

py实验一

2、九九乘法表。 编写程序&#xff0c;输出九九乘法表。 源代码&#xff1a; for a in range(1, 10): for b in range(1, a1): print(f"{a}*{b}{a * b}", end" ") print() 列出测试数据和实验结果截图&#xff1a; 3、编写程序&#xff0…

progeny PROGENy

单细胞之富集分析-6&#xff1a;PROGENy - 简书 (jianshu.com) #request 2 .libPaths(c( "/home/data/t040413/R/x86_64-pc-linux-gnu-library/4.2","/home/data/t040413/R/yll/usr/local/lib/R/site-library", "/home/data/refdir/Rlib/", &qu…