在我网站svgtrick开一个新系列,主如果运用GreenSock来编写和完成动画结果,经由过程现实的结果来熟习GreenSock的各个要领和技能。
关于GreenSock的基本知识,能够看看我整顿的GreenSock简明教程。
这个结果也是在codepen上看到的,拿来剖析下完成思绪,趁便熟习下GreenSock的一些API的运用要领。
先来看看要完成的结果:
这个结果中这个图形是运用SVG来完成的,代码有点多,细致代码就不贴了,贴个也许的的构造:
<div class="container">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" class="undefined">
......
</svg>
</div>
加上一点点款式:
body{
background-color:#fff;
overflow:hidden;
}
body, html {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
.container, svg{
width:100%;
height:100%;
}
svg{
visibility:hidden;
}
在款式中,先把SVG的visibility的属性设置为hidden,如许就能够等GreenSock初始化设置完后,才显现SVG,在体验上会更好一点。
先来剖析下结果:
1、起首是顺时针扭转
2、然后是减少
3、末了放大
不断的轮回这个动画结果。
先来初始化一些设置,从结果能够看出,logo是垂直程度居中。这里运用GreenSock来完成这个定位的:
var container = document.querySelector('.container');
var triangle = document.querySelector('.undefined');
TweenMax.set(container, {
position:'absolute',
top:'50%',
left:'50%',
xPercent:-50,
yPercent:-50
})
TweenMax.set(triangle, {
scale:0.25
})
TweenMax.set('svg', {
visibility:'visible'
})
起首是把SVG和DIV节点存储在定义好的变量中。然后运用TweenMax的set要领来把logo定好位置,在SVG初始的状况中,它本身举行了一个缩放,缩放到本来的0.25倍。初始化完后,把SVG的visibility设置为visible,显现SVG。
接下来就是来编写动画结果:
var tl = new TimelineMax({repeat:-1, repeatDelay:1});
tl.timeScale(6);
tl.to(triangle, 8, {
rotation:'+=360',
ease:Power2.easeIn
})
.to(triangle, 3, {scale: 0.2, ease:Power2.easeOut})
.to(triangle, 3, {scale: 0.25, ease:Power2.easeIn})
起首声明一个TimelineMax的实例,从结果能够看出,这个动画结果是无穷轮回的,所以设置它的repeat属性的值为-1,而且轮回的耽误时候为1秒即repeatDelay:1。
先来设置动画运转的速度,经由过程timeScale要领来设置。
timeScale要领是用来设置或读取时候轴的回放速度,比方0.5为一半速度,1为一般速度,2为2倍速度。在上面的代码中设置为6,示意以6倍的速度来运转这个动画结果。
设置好动画播放速度后,先来完成图形的扭转结果,经由过程TimelineMax.to要领来完成。
在GreenSock中能够经由过程rotation要领来完成扭转结果,动画结果是扭转360度,即能够经由过程rotation:’+=360’来完成这个结果。当然在动画结果中,活动曲线是必不可少的,GreenSock供应了雄厚的活动曲线来设置动画的活动结果。在代码中简朴的运用了最基本的活动曲线easeIn,结果跟CSS3中的easeIn差不多。更雄厚的曲线能够去这个地点看看。
扭转以后,是在初始大小的状况下举行减少,经由过程scale这个属性来完成。这里减少的值是o.2,减少以后,恢复的初始状况即scale:0.25。
全部动画结果就完成了,经由过程这个简简朴单的结果,能够发明运用GreenSock来编写动画结果是何等的轻易简朴。
总结下,这个结果的运用到几个重点的要领:
1、repeat : int:轮回次数。设置为-1为无穷轮回。
2、repeatDelay : Number:轮回耽误的时候。
3、timeScale:Number[读写] 用来设置或读取时候轴的回放速度,比方0.5为一半速度,1为一般速度,2为2倍速度。