Open WangShuXian6 opened 5 years ago
greensock-js文件包是免费开源部分,包含有核心工具、过渡时间曲线、基本插件、拓展插件等。 此外,GreenSock还有一些商业插件。
下载免费greensock-js文件包和破解版商业插件 https://www.tweenmax.com.cn/source/
加载文件
<script src="js/greensock-js/TweenLite.min.js"> </script> -- 核心工具,可初始化TweenLite对象 <script src="js/greensock-js/plugins/CSSPlugin.min.js"> </script> -- 基础插件,用于制作CSS动画2D,3D动画 <script src="js/greensock-js/plugins/BezierPlugin.min.js"> </script> -- 基础插件,用于制作贝塞尔曲线 <script src="js/greensock-js/TimelineLite.min.js"> </script> -- 核心工具,创建时间轴管理动画 <script src="js/greensock-js/easing/EasePack.min.js"> </script> -- 拓展的时间曲线,例如bounce
使用TweenMax上面的加载可以简约为
<script src="js/greensock-js/TweenMax.min.js"> </script>
制作动画
动画的三要素:
1.动画目标对象 2.动画的持续时间 3.变化的属性
制作一个简单的CSS动画。 制作CSS动画需要用到CSSPlugin(已经包含于TweenMax)。 使用TweenMax的to()方法,将一个id为"obj"的DOM元素的CSS属性的left属性从当前值过渡到500px,从而产生移动效果。持续时间3秒。
<div id="obj"></div>
#obj{
position:relative;
left:200px;
top:20px;
width:50px;
height:50px;
background:#6fb936;
border-radius:5px;
}
TweenMax.to("#obj", 3, {left:500});
left属性动画需要position:reletive支持,如需相对位置移动可使用x(CSS3的2D动画)更为简便
TweenMax.to("#obj", 3, {x:200});//在原有位置向右移动200px TweenMax.to("#obj", 3, {x:200, y:100});//向右移动200px的同时向下移动100px
元素从左边200px的位置开始运动到指定的位置
TweenLite.fromTo($box, 2, {x: '-=200px'}, {x: 150});
x:150会覆盖在CSS中定义的transform: translate(–50%, –50%)的样式,用新的transform: matrix(1, 0, 0, 1, 150, -50);样式来代替。
https://www.tweenmax.com.cn/tool/bezier/
三次贝塞尔曲线控制(cubic) M200 250 C347 133 552.5 106 500,250
二次贝塞尔曲线控制(quadratic) M200 250 Q449.5 101 500 250
TweenLite TweenMax TimelineLite TimelineMax
Attr Bezier CSS DirectionalRotation RoundProps
Linear Power0 Power1 (a.k.a. "Quad") Power2 (a.k.a. "Cubic") Power3 (a.k.a. "Quart") Power4 (a.k.a. "Strong" or "Quint")
Back Bounce Circ Elastic Expo ExpoScaleEase Sine RoughEase SlowMo SteppedEase
ColorProps CSSRule Easel Modifiers Pixi ScrollTo Text
Draggable Requires CSSPlugin CustomEase Requires GreenSock account (free)
DrawSVG Physics2D PhysicsProps ScrambleText CustomBounce Requires CustomEase CustomWiggle Requires CustomEase GSDevTools MorphSVG SplitText ThrowProps Commercial license
GSAP | GreenSock Animation Platform/GreenSock 动画平台 |
---|---|
delayedCalls | 延迟执行函数 |
eventCallback | 事件回调函数 |
tween | 动画/补间动画 |
starting value | 起点属性 |
current values | 当前属性 |
destination values/ending values | 终点属性 |
stagger | 错开 |
ease | 时间曲线/速度曲线 |
timeline | 时间轴 |
TweenLite/TweenMax | 动画实例 |
TimelineLite/TimelineMax | 时间轴实例 |
label | 标记/标签 |
obj/target | 动画目标/动画对象 |
kill | 删除/清除/杀死 |
.TweenMax( target:Object, duration:Number, vars:Object ) ;
TweenMax的构造函数,用来构建一个TweenMax对象。 如果使用TweenLite则是TweenLite(); TweenMax()适用于TweenMaxTweenLite
TweenMax()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
target | object | 是 | 需要缓动的对象 |
duration | number | 是 | 动画持续时间,一般是秒 |
vars | object | 是 | 动画参数 |
往右移动500px,同时改变透明度
<div class="box green"></div> <p>往右移动500px,同时改变透明度</p>
.box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
new TweenMax('.box', 3, { x: 500, alpha : 0.3, });
/还可通过function关键词返回变化值 TweenMax.to(".box", 1, { x: function() { return Math.random() 300; } }); */
>TweenMax()的补充说明
>例子中改变CSS(x: 500, alpha : 0.3)
>如果加载的是TweenLite.min.js,则还需要加载CSS插件plugins/CSSPlugin.min.js才能进行css动画。
***
### TweenMax.to()
```ts
TweenMax.to( target:Object, duration:Number, vars:Object ) : TweenMax
此方法用于创建一个从当前属性到指定目标属性的TweenMax动画对象。 以下几种方式效果相同。
TweenMax.to(obj, 1, {x:100}); var myTween = new TweenMax(obj, 1, {x:100}) var myTween = TweenMax.to(obj, 1, {x:100});
对多个目标进行动画
TweenMax.to([obj1, obj2, obj3], 1, {x:100});
TweenMax.to()适用于TweenMaxTweenLite
TweenMax.to()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
target | object | 是 | 需要动画的对象 |
duration | number | 是 | 动画持续时间,一般是秒 |
vars | object | 是 | 动画参数(CSS属性、延迟、重复次数等) |
对三个元素进行动画,分别向X轴方向运动100px、200px、300px
<div class="wrapper"> <div class="box green"></div> <div class="box orange"></div> <div class="box grey"></div> </div>
.box { width:50px; height:50px; border-radius:6px; margin-top:4px; } .green{ background-color:#6fb936; } .orange { background-color: #f38630; } .grey { background-color: #989898; }
var myTween = TweenMax.to(".box", 1, { x: function(index, target) { console.log(index, target); return (index + 1) * 100 // 100, 200, 300 } })
TweenMax.from( target:Object, duration:Number, vars:Object ) : TweenMax
通过设置动画起始点来初始化一个TweenMax,相当于动画从设置点开始。
TweenMax.from(mc, 1.5, {opacity:0, delay:2});
多个目标的动画
TweenMax.from([mc1, mc2, mc3], 1.5, {opacity:0});
TweenMax.from()适用于TweenMaxTweenLite
TweenMax.from()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
target | object | 是 | 需要动画的对象 |
duration | number | 是 | 动画持续时间,一般是秒 |
vars | object | 是 | 设置动画的一些属性及其他参数 |
元素从500px开始,返回原来位置
<div class="box green"></div> <p>元素从500px开始,返回原来位置</p>
body { background: #f8f8f8; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color: #000; margin: 0 10px; padding: 0; } .box { width:50px; height:50px; border-radius:6px; margin-top:4px; } .green{ background-color:#6fb936; }
var myTween = TweenMax.from(".box", 3, { x: 500, })
TweenMax.fromTo( target:Object, duration:Number, fromVars:Object, toVars:Object ) : TweenMax
通过设置动画起始点和结束点来初始化一个TweenMax,相当于动画从设置点到第二个设置点。
TweenMax.fromTo([element1, element2], 1, {x:200}, {x:500});
TweenMax.fromTo()适用于TweenMaxTweenLite
TweenMax.fromTo()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
target | object | 是 | 需要动画的对象 |
duration | number | 是 | 动画持续时间,一般是秒 |
fromVars | object | 是 | 起始点动画参数 |
toVars | object | 是 | 结束点动画参数 |
元素从200px移动到500px
<div class="box green"></div>
.box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
var myTween=TweenMax.fromTo('.box', 3, {x: 200,},{x: 500,}); //从200到500
TweenMax.staggerTo(
targets: Array,
duration: Number,
vars: Object,
stagger: Number,
onCompleteAll: Function,
onCompleteAllParams: Array,
onCompleteAllScope:*
) : Array
stagger系列方法为多个目标制作一个有间隔的动画序列,相当于多个TweenMax的数组。 需要设置每个动画的开始间隔。如不设置则为零,同时开始动画。
var objects = [obj1, obj2, obj3, obj4, obj5];
TweenMax.staggerTo(objects, 1, {y:"+=150", opacity:0}, 0.2);
TweenMax.staggerTo()适用于TweenMax
TweenMax.staggerTo()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
targets | Array | 是 | 要进行动画的对象,可以有多个,以数组形式传入 |
duration | number | 是 | 动画持续的秒数(或帧数,如果设置了useFrames:true) |
vars | object | 是 | 设置动画的一些属性及其他参数 |
stagger | Number | 否 | 每个动画的起始间隔,默认是0 |
onCompleteAll | Function | 否 | 当所有显示对象都完成动画后要调用的函数 |
onCompleteAllParams | Array | 否 | onCompleteAll函数的参数,以数组形式传入 |
onCompleteAllScope | 否 | onCompleteAll函数的作用域,this |
每个动画序列的开始时间间隔0.5秒
<h2>TweenMax.staggerTo()</h2> <div id="demo"> <p>每个动画序列的开始时间间隔0.5秒</p> <div class="box green"></div> <div class="box grey"></div> <div class="box orange"></div> <div class="box green"></div> <div class="box grey"></div> <div class="box orange"></div> <div class="box green"></div> <div class="box grey"></div> <div class="box orange"></div> </div>
body { background-color:#1d1d1d; color:#f3f2ef; } h2 { font-family: "Signika Negative", sans-serif; margin: 10px 0 10px 0; font-size:30px; } p{ line-height:22px; margin-bottom:16px; } #demo { height:100%; position:relative; } .box { width:50px; height:50px; position:relative; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; } .orange { background-color:#f38630; } .grey { background-color:#989898; }
TweenMax.staggerTo(".box", 1, {rotation:360, y:100}, 0.5);
TweenMax.staggerTo()的补充说明 stagger系列方法可用于TweenMax、TimelineLite、TimelineMax,不可用于TweenLite。 由于stagger系列方法(staggerTo、staggerFrom、staggerFromTo)返回的是一个tween的数组,所以不可以直接对其返回值直接使用tween的属性和方法。
tween=TweenMax.to(...)
tween.play()//播放动画
tween=TweenMax.staggerTo(...)
tween.play()//无法使用
stagger系列方法可以使用cycle属性来循环设置动画参数值。
TweenMax.staggerFrom(
targets:Array,
duration:Number,
vars:Object,
stagger:Number,
onCompleteAll:Function,
onCompleteAllParams:Array,
onCompleteAllScope:*
) : Array
通过设定序列动画的终点来初始化一组TweenMax。
var objects = [obj1, obj2, obj3, obj4, obj5]; TweenMax.staggerFrom(objects, 1, {y:"+=150"}, 0.2);
TweenMax.staggerFrom()适用于TweenMax
TweenMax.staggerFrom()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
targets | Array | 是 | 要进行动画的对象,可以有多个,以数组形式传入 |
duration | number | 是 | 动画持续的秒数(或帧数,如果设置了useFrames:true) |
vars | object | 是 | 设置动画的一些属性及其他参数 |
stagger | Number | 否 | 每个动画的间隔,默认是0 |
onCompleteAll | Function | 否 | 当所有显示对象都完成动画后要调用的函数 |
onCompleteAllParams | Array | 否 | 传递给onCompleteAll函数的参数,以数组形式传入 |
onCompleteAllScope | 否 | onCompleteAll函数的作用域 |
展示
<h2>TweenMax.staggerFrom() with cycle</h2> <div id="demo"> <p>cycle属性允许你在所有TweenMax、TimelineLite和 TimelineMax插件中基于stagger的函数里面,定义一个array的属性值或者function的属性值 (注释中有详细列表)。</p>
```css
body {
background-color:#1d1d1d;
color:#989898;
}
h2{
margin: 10px 0 10px 0;
font-size:30px;
}
p{
line-height:22px;
margin-bottom:16px;
width:650px;
}
#demo {
height:100%;
position:relative;
}
.box {
width:50px;
height:50px;
position:relative;
border-radius:6px;
margin:4px;
display:inline-block;
background:grey;
}
.green{
background-color:#6fb936;
}
.orange {
background-color:#f38630;
}
.grey {
background-color:#989898;
}
TweenMax.staggerFrom(".box", 1, {
cycle:{
//an array of values
backgroundColor:["red", "white", "#00f"],
//function that returns a value
y:function(index){
return index * 20;
}
}
}, 0.5);
/* The cycle property is available in:
TweenMax.staggerFromTo()
TweenMax.staggerFrom()
TweenMax.staggerTo()
TimelineLite.staggerFromTo()
TimelineLite.staggerFrom()
TimelineLite.staggerTo()
TimelineMax.staggerFromTo()
TimelineMax.staggerFrom()
TimelineMax.staggerTo()
*/
stagger系列方法可以使用cycle属性来循环设置动画参数值 TweenMax.staggerFrom() with cycle cycle属性允许你在所有TweenMax、TimelineLite和 TimelineMax插件中基于stagger的函数里面,定义一个array的属性值或者function的属性值 (注释中有详细列表)。
TweenMax.staggerFromTo(
targets:Array,
duration:Number,
fromVars:Object,
toVars:Object,
stagger:Number,
onCompleteAll:Function,
onCompleteAllParams:Array,
onCompleteAllScope:*
) : Array
通过设定序列动画的起点和终点来初始化一个TweenMax。
var objects = [obj1, obj2, obj3, obj4, obj5];
TweenMax.staggerFromTo(objects, 1, {opacity:1}, {opacity:0}, 0.2);
还可以使用cycle属性。 TweenMax.staggerFromTo()适用于TweenMax
TweenMax.staggerFromTo()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
targets | Array | 是 | 要进行动画的对象,可以有多个,以数组形式传入 |
duration | number | 是 | 动画持续的秒数(或帧数,如果设置了useFrames:true) |
fromVars | object | 是 | 设置动画的一些属性及其他参数 |
toVars | object | 是 | 设置动画的一些属性及其他参数 |
stagger | Number | 否 | 每个动画的间隔,默认是0 |
onCompleteAll | Function | 否 | 当所有显示对象都完成动画后要调用的函数 |
onCompleteAllParams | Array | 否 | 传递给onCompleteAll函数的参数,以数组形式传入 |
onCompleteAllScope | 否 | onCompleteAll函数的作用域 |
展示
<h2>TweenMax.staggerFromTo() with cycle</h2> <div id="demo"> <p>cycle属性允许你在所有TweenMax、TimelineLite和 TimelineMax插件中基于stagger的函数里面,定义一个array的属性值或者function的属性值 (注释中有详细列表)。</p>
```css
body {
background-color:#1d1d1d;
font-family: "Asap", sans-serif;
color:#989898;
margin:0 10px;
font-size:16px;
}
h1, h2, h3 {
font-family: "Signika Negative", sans-serif;
margin: 10px 0 10px 0;
color:#f3f2ef;
}
h1 {
font-size:36px;
}
h2 {
font-size:30px;
}
h3 {
font-size:24px;
}
p{
line-height:22px;
margin-bottom:16px;
width:650px;
}
#demo {
position:relative;
}
.box {
width:50px;
height:50px;
position:relative;
border-radius:6px;
margin:4px;
display:inline-block;
background:grey;
}
.green{
background-color:#6fb936;
}
.orange {
background-color:#f38630;
}
.grey {
background-color:#989898;
}
TweenMax.staggerFromTo(".box", 1, {
cycle:{
//an array of values
backgroundColor:["red", "white", "#00f"],
//function that returns a value
y:function(index){
return index * 10;
}
}
},
{
cycle:{
//an array of values
backgroundColor:["green", "orange", "pink"],
//function that returns a value
y:function(){
return (Math.random() * 100) + 20;
}
}
}, 0.5);
/* The cycle property is available in:
TweenMax.staggerFromTo()
TweenMax.staggerFrom()
TweenMax.staggerTo()
TimelineLite.staggerFromTo()
TimelineLite.staggerFrom()
TimelineLite.staggerTo()
TimelineMax.staggerFromTo()
TimelineMax.staggerFrom()
TimelineMax.staggerTo()
*/
TweenMax.delayedCall(
delay:Number,
callback:Function,
params:Array,
scope:*,
useFrames:Boolean
) : TweenMax
提供一种在设定的时间(或帧)后调用函数的简单方法。
//1秒后执行myFunction并传递两个参数: TweenMax.delayedCall(1, myFunction, ["param1 value", "param2 value"],document,true); function myFunction(param1, param2) { console.log(param1+param2+this) }
TweenMax.delayedCall()适用于TweenMaxTweenLite
TweenMax.delayedCall()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
delay | Number | 是 | 要延迟的秒数(或帧数,如果设置了useFrames:true) |
callback | Function | 是 | 要延迟执行的函数 |
params | Array | 否 | 传递给onComplete函数的参数,以数组形式传入 |
scope | * | 否 | 函数的作用域,this的指向,默认为空 |
useFrames | Boolean | 否 | 设定延迟的时间模式是基于秒数还是帧数 ,默认false:秒 |
展示 延迟2秒输出"+param1+'和'+param2
<div class="box green"></div>
body { background: #f8f8f8; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color: #000; margin: 0 10px; padding: 0; } .box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
var myTween=new TweenMax('.box', 3, { x: 500, }) var myTween2=TweenMax.delayedCall(2,myFunction,["参数1","参数2"]) function myFunction(param1, param2) { alert("延迟2秒输出"+param1+'和'+param2); }
TweenMax.set( target:Object, vars:Object ) : TweenMax
立即设置目标的属性值而不产生过渡动画,相当于0的动画时间。 返回TweenMax对象。
//以下两个设置作用相同 TweenMax.set(myObject, {x:100}); TweenMax.to(myObject, 0, {x:100});
TweenMax.set()适用于TweenMaxTweenLite
TweenMax.set()的参数
参数名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
target | object | 是 | 需要移动的对象 |
vars | object | 是 | 动画参数 |
右边的方块设置了透视transformPerspective,因此产生了3D效果
<p>右边的方块设置了透视transformPerspective,因此产生了3D效果</p> <div class="wrapper"> <div class="box"></div> <div class="nbox box"></div> </div>
.box { width:100px; height:100px; background-color:#6fb936; margin:10px 100px 0; display:inline-block; } .600box { margin-top: 10px; } .nbox { display:inline-block; margin: 10px auto 0; width:100px; height:100px; }
TweenMax.set(".nbox",{transformPerspective:300}); //或者设置父级元素,使其全部子元素产生3D效果 TweenMax.set(".wrapper",{perspective:200}); TweenMax.to(".box", 3, {rotationY:360, transformOrigin:"left top"})
为一个数组设置属性
TweenMax.set([obj1, obj2, obj3], {x:100, y:50, opacity:0});
在平时的动效开发中,为了使动效具有立体的效果,一般会用到CSS3中的3D transform这一属性。在TweenMax中也提供了3D transform功能,支持CSS3D的全部属性,使用起来比CSS3更加方便。 perspective和transformPerspective两个属性。它们是TweenMax中运行的基础,使用它们才能使元素具有一个3D空间透视的表现能力。
transformPerspective是针对单个元素使用的,而perspective则是使用在父级元素上,使用它会使该父级元素下的子元素具有3D空间透视的一个展现形式。 只需要在父级使用perspective的方法,可以同时使它的子元素都具有3D的展现。
transformOrigin是用来设置元素在做transform位移变换时的原点的。默认值是元素的中心点即("50%,50%")。transformOrigin有三个值(x,y,z),z值是一个可选项。
可以使用"top", "left", "right",或者是"bottom"值亦或是百分值(比如bottom right可以设置为 "100% 100%)。
delay:Number
动画开始之前的延迟秒数(以帧为单位时则为帧数)。 delay适用于TweenMaxTweenLite
延迟三秒开始动画
<div class="box green"></div> <p>延迟三秒开始动画</p>
body { background: #f8f8f8; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color: #000; margin: 0 10px; padding: 0; } .box { width:50px; height:50px; line-height:50px; text-align:center; color:#fff; font-size:18px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
new TweenMax('.box', 3, { x: 500, delay: 3 });
time={score:3} TweenMax.to(time, 3, { score: 0, ease: Power0.easeNone, onUpdate:function(){ document.querySelector(".box").innerHTML=Math.ceil(time.score); } });
***
### ease
>ease: Ease (or Function or String)
>过渡效果的速度曲线(缓动效果)。你可以在动画的参数中设置各种缓动来控制动画的变化率,赋予其特定的“感觉”。例如Elastic.easeOut或 Strong.easeInOut。默认是Power1.easeOut。
```ts
new TweenMax('.box', 3, {
x: 500,
ease: Bounce.easeOut
});
TweenLite中包含了基本缓动:Power0、Power1、Power2、Power3、Power4、Linear、Quad、Cubic、Quart、Quint、Strong,他们每个都含有.easeIn、.easeOut、.easeInOut参数(对于线性动画,请使用Power0.easeNone)。 而TweenMax在此基础上还另外增加了特殊缓动:Elastic、Back、Bounce、SlowMo、SteppedEase、RoughEase、Circ、Expo、Sine。 如果想在TweenLite中使用特殊缓动则需要加载缓动类easing/EasePack.min.js 。 ease适用于TweenMaxTweenLite
展示
<div class="box green"></div>
body { background: #f8f8f8; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color: #000; margin: 0 10px; padding: 0; } .box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
new TweenMax('.box', 3, { x: 500, ease: Bounce.easeOut });
ease的补充说明 此外,缓动效果还可以像Jquery那样写,easeOutStrong 等同于Strong.easeOut 。
在TweenMax2.0中,Power0取代了Linear,Power1取代了Quad,Power2取代了Cubic,Power3取代了Quart,Power4取代了Quint/Strong。
Back还可设定强度,如ease: Back.easeOut.config(1.7) Elastic还可设定强度,如ease: Elastic.easeOut.config(1, 0.3) SlowMo还可设定强度,如ease: SlowMo.ease.config(0.7, 0.7, false) SteppedEase还可设定阶数,如ease: SteppedEase.config(12) RoughEase还需要设定其他参数
paused: Boolean
如果设置为true,动画将在创建时立即暂停。默认false paused适用于TweenMaxTweenLite
展示
<div class="box green"></div> <br> <input type="button" id="playBtn" value="play()" title="播放">
body { background: #f8f8f8; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color: #000; margin: 0 10px; padding: 0; } .box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
tween = new TweenMax('.box', 3, { x: 500, paused: true });
playBtn = document.getElementById("playBtn") playBtn.onclick = function() { tween.play(); }
***
### immediateRender
```ts
immediateRender:Boolean
立即渲染,默认false。
一般来说,TweenMax的运动对象会在下一个渲染周期前(也就是下一帧)被渲染到场景中,除非你设置了delay。如果想强制立即渲染,可以把这个参数设为true。
另外from()方法的运动对象是立即渲染的(默认true),如果你不想该运动对象被渲染,可以把这个参数设为false。
immediateRender适用于TweenMaxTweenLite
橙色块设置了不立即渲染,因此动画开始前没有到达指定位置
<div class="box green"></div>
<p>橙色块设置了不立即渲染,因此动画开始前没有到达指定位置</p>
<div class="box orange"></div>
body {
background: #f8f8f8;
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
color: #000;
margin: 0 10px;
padding: 0;
}
.box {
width:50px;
height:50px;
border-radius:6px;
margin-top:4px;
display:inline-block
}
.green{
background-color:#6fb936;
}
.orange {
background-color: #f38630;
}
TweenMax.from('.green', 3, {
x: 500,
delay:3,
});
TweenMax.from('.orange', 3, {
x: 500,
delay:3,
immediateRender: false,
});
overwrite: String (or int)
用来控制同一个对象上有多个动画时的覆盖之类的情况。
TweenMax.to('.box', 6, {x: 700,y:100,});
TweenMax.to('.box', 3, {x: 200,overwrite:"none"});
//或者
TweenMax.to('.box', 3, {x: 200,overwrite:0});
overwrite适用于TweenMaxTweenLite
有以下6种模式,以上例来说明:
overwrite的参数
模式 | 模式代码 | 说明 | 效果 |
---|---|---|---|
0 | "none"或者false | 不做任何处理 | 前三秒运行x: 200,y:100后三秒运行x: 700,y:100 |
1 | "all"或者true | 覆盖所有 | 只运行x: 200 |
2 | "auto" | 仅覆盖重复的属性默认模式 | 前三秒运行x: 200,y:100后三秒运行y:100 |
3 | "concurrent" | 同时发生 | 跟模式1很相似,不同是它只覆盖掉正在运行的动画属性。而放过其他的没有启动的动画属性。 |
4 | "allOnStart" | 开始时覆盖 | 跟模式1非常像。两点不同是他是在动画属性第一次渲染时才覆盖掉其他所有的动画属性,而且这个会把在他之后创建的动画属性也覆盖掉。 |
5 | "preexisting" | 在动画属性第一次渲染时才覆盖掉其他所有的动画属性。 |
默认模式2,"auto"
<p>默认模式2,"auto"</p> <div class="box green"></div>
.box { width:50px; height:50px; border-radius:6px; margin-top:4px; display:inline-block } .green{ background-color:#6fb936; }
TweenMax.to('.box', 6, {x: 700,y:100,}); TweenMax.to('.box', 3, {x: 200,overwrite:2});
GreenSock