跳过主要内容

设置

设置( 目标:[ 对象 | 数组 | 字符串 ], 变量:对象, 位置:[ 数字 | 字符串 ] ) : 自身

添加一个零持续时间的补间动画到时间轴的末尾(或者使用参数指定其他位置),当虚拟播放头到达时间轴上的该位置时立即设置值 —— 这是一种便捷方法,实现的功能与以下方法完全相同:position参数)该方法在时间轴的末尾(或使用参数指定其他位置)add( gsap.to(target, {duration: 0, ...}) )但代码量更少。

参数

  • 目标对象:[对象 | 数组 | 字符串]

    其属性将被设置的目标对象(或对象数组)。

  • vars: 对象

    一个定义每个属性应设置为何值的对象。例如,要将某个元素的left设置为100,且将另一个元素的top设置为200,请这样做:myTimeline.set(element, {left: 100, top: 200});

  • 位置:[数字 | 字符串]

    (默认值 ="+=0") - 控制时间轴中的插入点(默认情况下是时间轴的末尾)。请参阅下面的选项,或者查看位置参数文章其中包含交互式时间轴可视化展示和视频。如果你定义了一个尚不存在的标签,它将自动被添加到时间轴的末尾

返回值:self

self(便于链式调用)

细节

添加一个gsap.set()添加到时间轴的末尾(或者使用“position”参数添加到其他位置)——这是一个便捷方法,其完成的操作与add( gsap.set(...) )完全相同,但代码更少。例如:

var tl = gsap.timeline();

var setValues = gsap.set(element, { x: 100, opacity: 0.5 });
tl.add(setValues);

//this line produces the same result as the previous two lines (just shorter)
tl.set(element, { x: 100, opacity: 0.5 });

参考gsap.set() 文档获取所有关于set().


可用的详细信息和特殊属性。to(), call(), from()等快速构建序列:

//create a timeline that calls myFunction() when it completes
var tl = gsap.timeline({ onComplete: myFunction });

//now we'll use chaining, but break each step onto a different line for readability...

//tween element's x from -100
tl.from(element, { duration: 1, x: -100 })

//then tween element's y to 50
.to(element, { duration: 1, y: 50 })

//then set element's opacity to 0.5 immediately
.set(element, { opacity: 0 })

//then call otherFunction()
.call(otherFunction)

//finally tween the rotation of all elements with the class "myClass" to 45 and stagger the start times by 0.25 seconds
.to(".myClass", { duration: 1.5, rotation: 45, stagger: 0.25 });

在时间轴中定位set()

默认情况下,set() 调用会被添加到end末尾position参数来精确控制元素放置的位置。它使用灵活的语法,包括以下选项:

  • 绝对时间(以秒为单位)从时间轴起点开始测量,作为数值比如3

    // insert exactly 3 seconds from the start of the timeline
    tl.set(".class", { x: 100 }, 3);
  • 标签,例如"someLabel". 如果标签不存在,它将被添加到时间轴的结尾。

    // insert at the "someLabel" label
    tl.set(".class", { x: 100 }, "someLabel");
  • "<"这个start前一个动画的结束位置**。可以将其想象成对<作为一个指向之前动画起点的指针。

    // insert at the START of the  previous animation
    tl.set(".class", { x: 100 }, "<");
  • ">"- 变量end前一个动画的起始位置**。可以将其想象成对>作为一个指向之前动画结束位置的指针。

    // insert at the END of the previous animation
    tl.set(".class", { x: 100 }, ">");
  • 一个复杂的字符串,其中"+=""-="前缀表示relative值。当数字紧跟在"<"或者">"后面时,会解释为相对值,所以"<2"等同于"<+=2".示例:

    • "+=1"- 时间轴结束位置之后的1秒(产生空隙)
    • "-=1"- 时间轴结束位置之前的1秒(重叠)
    • "myLabel+=2"- 标签之后的2秒"myLabel"
    • "<+=3"- 前一个动画起点之后的3秒
    • "<3"- 等同于"<+=3"(见上方)("+="在紧随"<"或者">")
    • ">-0.5"- 前一个动画结束前的0.5秒。相当于说"前一个动画的结束加上-0.5"
  • 基于百分比的复杂字符串。当紧跟着"+="或者"-="前缀时,该百分比基于的是总持续时间正在被插入的动画。如果紧接着的是"<"或者">",则百分比基于的是总持续时间前一个动画. 注意:总持续时间包括重复/往返效果。示例:

    • "-=25%"- 与时间轴末端重叠,重叠时间为插入动画总持续时间的25%
    • "+=50%"- 超出时间轴末端,超出时间为插入动画总持续时间的50%,形成间隙
    • "<25%"- 前一个动画开始后的25%处。等价于">-75%"即从前一个动画的结束位置向前的-75%end前一个动画的结束位置**。
    • "<+=25%"- 插入动画总持续时间的25%后从前一个动画的起始位置开始。不同于"<25%",其百分比基于的是前一个动画的总持续时间,而任何紧跟在"+="或者"-="后的内容都基于插入动画的总持续时间。
    • "myLabel+=30%"- 插入动画总持续时间的30%后从标签位置开始"myLabel".

*基于百分比的值是在GSAP 3.7.0版本中加入的
**“前一个动画”指的是最近插入的动画,不一定是离时间轴末尾最近的那个动画。

位置参数交互式演示

加载中...

参数之后,并使用以下选项中的灵活语法:位置参数文章其中包括交互式时间轴可视化展示和视频。

默认的immediateRender值为false。关于immediateRender的更多信息,请参见这篇文章.

无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗