【GSAP3教程】如何创建一个 Tween

简介: 上一篇就简单说了下GSAP2和GSAP3的区别,也简单说了gsap.to()的使用方法,这篇主要说如何创建一


上一篇就简单说了下GSAP2和GSAP3的区别,也简单说了gsap.to()的使用方法,这篇主要说如何创建一个Tween。

1创建Tween的三个方法

gsap有三个方法可以快速创建一个Tween:

  1. gsap.to(targets, vars )
    从原本属性变化到 vars 中定义的属性
  2. gsap.from(targets, vars )
    从 vars 中定义的属性 变化到 原本属性
  3. gsap.fromTo(targets, fromVars , toVars)
    fromVars 中定义的属性 变化到 toVars 中定义的属性

参数targets:这可以是选择器文本,如".class", "#id"等(GSAP内部使用document.querySelectorAll()),或者它可以是对元素的直接引用,通用对象,甚至是对象数组。vars:一个对象,包含你想要动画的所有属性/值,以及任何特殊属性,如ease, duration, delay,或onComplete。2

Tween使用方法

我们用gsap的上面三个方法实现一个css平移效果。

1. gsap.to()

gsap.to('#box', { duration: 5, x: 500 })

id为box的元素,从初始位置5秒钟在x轴平移500像素,

640.gif

2. gsap.from()

gsap.from('#box', { duration: 5, x: 500 })

id为box的元素,从500像素的位置5秒钟平移到初始位置,

640 (1).gif

3. gsap.fromto()

gsap.fromTo('#box', {x:-100} , { duration: 5, x: 500 })

id为box的元素,从x轴-100像素的位置,5秒钟移动到500像素的位置

640 (2).gif

注意:这里有个需要注意的地方,就是在 fromTo 方法中, duration 等动画属性,需要放置在 toVars 参数中, 不能放置在 fromVars 中。

vars这个对象里我们还可以使用一些高级用法,想要对动画增加一些事件,那就可以使用onStart、onUpdate、onComplete 等回调方法 。那我们就可以这么使用

gsap.to('#box', { 
    duration: 5, 
    x: 500,
    onStart: function() {
        // 这里写逻辑
    },
    onUpdate: function() {
        // 这里写逻辑
    }
})

同时我们可以控制Tween,调用方法时,会返回一个实例,我们就可以通过这个实例来对这个动画进行控制。

640 (3).gif

var tween =  gsap.to('#box',{ duration: 5, x: 500 })
document.querySelector("#play").onclick = () => tween.play(); 
document.querySelector("#pause").onclick = () => tween.pause(); 
document.querySelector("#resume").onclick = () => tween.resume(); 
document.querySelector("#restart").onclick = () => tween.restart();

通过对实例方法的调用,就可以控制动画。这里只是部分方法,具体请看官方文档。下篇文章我们讲解使用时间轴。


相关文章
|
12月前
|
XML 移动开发 前端开发
Canvas简介与基本使用(上)
Canvas简介与基本使用
62 0
|
12月前
|
前端开发
Canvas简介与基本使用(下)
Canvas简介与基本使用
62 0
|
2月前
|
存储 缓存 移动开发
PixiJS源码分析系列:第三章 使用 canvas 作为渲染器
PixiJS源码分析系列:第三章 使用 canvas 作为渲染器
|
5月前
|
前端开发
SVG实例入门与动画实战二
SVG实例入门与动画实战二
|
5月前
|
数据可视化
SVG实例入门与动画实战一
SVG实例入门与动画实战一
|
图形学
unity3d-Animation&&Animator接口(基本使用)
unity3d-Animation&&Animator接口(基本使用)
unity3d-Animation&&Animator接口(基本使用)
|
存储 Android开发 iOS开发
Flutter(十四)——动画的原理以及Tween与Curve的使用
Flutter(十四)——动画的原理以及Tween与Curve的使用
623 1
Flutter(十四)——动画的原理以及Tween与Curve的使用
|
JavaScript
【Vue3从零开始-第四章】4-5 列表动画和状态动画
【Vue3从零开始-第四章】4-5 列表动画和状态动画
158 0
【Vue3从零开始-第四章】4-5 列表动画和状态动画
|
存储 前端开发 算法
canvas进阶——实现事件系统
前言 大家好! 我是热爱图形的fly, 之前在群里和粉丝讨论canvas 如何事件系统, 然后呢? 我自己其实也对这个比较感兴趣, 我看过很多canvas 实现的项目, 比如canvas 实现思维导图 「xmind」 , canvas 实现一个「绘图工具」。 然后呢无论是哪一个,其实背后都是在canavs 背后实现了一套事件系统,可惜这些源码都不开源。所以本着学习的激情, 我参考了一些文章实现一个简单事件系统。本篇文章你可以学到下面👇这些内容 我是怎么基于canvas去「构建基础框架」的 几何算法—— 「判断点是不是任意多边形内部」 如何进行「事件分发」和「阻止事件冒泡」 本篇文章我全是干
canvas进阶——实现事件系统
|
移动开发 前端开发 JavaScript
Canvas学习参考文档(上)
Canvas学习参考文档
292 0
Canvas学习参考文档(上)