取代 jquery animate

jquery的动画属性animate执行的效率低,因为考虑兼容性做了很多判断的原因。现在出现了许多特效执行的效率远远高于jquery。之前也有介绍过一插件《velocity.js中文手册 velocity取代jQuery animate()的插件》。
加上jquery本身也没有颜色渐变也不支持transforms属性的渐变。
现在介绍另一个插件jquery.gsap.js,核心是TweenMax.js它才是动画执行代码而且版本必须大于1.8.0,与其说介绍jquery.gsap.js还不如说介绍TweenMax.js。jquery.gsap.js是基于TweenMax.js上扩展的好处就是API跟jquery的animate一样不需要去重新学习新的API这也是它跟velocity.js一样的优点,兼容性很好,也不需要去写专门的兼容前缀样式,如-0-,webkit-.
关于TweenMax.js后面还会继续介绍它,因为它有自己的API可以选择性的使用jquery.gsap.js辅助插件,还有其他很多强大的插件。
首先加载:
加载方式一:(推荐) <script src="jquery-1.8.3.min.js"></script> <script src="TweenMax.min.js"></script> <script src="jquery.gsap.min.js"></script> 或者: 加载方式二: <script src="jquery-1.8.3.min.js"></script> <script src="js/plugins/CSSPlugin.min.js"></script> <script src="js/easing/EasePack.min.js"></script> <script src="js/TweenLite.min.js"></script> <script src="js/jquery.gsap.min.js"></script>
代码风格:
$("#box").animate( { x:'10px', scaleX:'3', skipGSAP:true, //禁用GSAP }, { duration:1000, //1秒内完成动画 easing:"easeOutStrong", //加速度 complete:function(){ //动画执行完毕后回调 document.title=111 } });
另一种风格:
$('#box').animate( { css:{ left:100, opacity:0.3 }, startAt:{left:10}, //初始化 delay:0, //1秒后开始执行动画 ease:Back.easeOut, //加速度效果 repeat:0, //多循环1次,也就是一共重复执行了2次同样的动画,-1就会无限重复循环 repeatDelay:0, //每次重复循环时间3秒,需要配合repeat属性 yoyo:false, //如果true,动画的循环是倒序,需要配合repeat属性 paused:false, //如果true,动画暂停 overwrite:'auto', onStart:function(){ //动画开始前回调 document.title='开始前执行' }, onStartParams:["{self}", "参数"], onComplete:function(a,b){ //动画结束后回调 document.title='动画完成' }, onCompleteParams:["{self}", "param2"], //为onComplete传参数,其中{self}值的是mov immediateRender:true, onUpdate:function(a,b){ //初始化执行一次,动画过程回调,以后动画有运动都还会不停的执行,直到动画结束才停止 // console.log(a.isActive()); }, onUpdateParams:["{self}", "参数"], //为onUpdate提供参数 useFrames:false } );
链式写法:
$('#box').animate({ left:100, borderColor:'red' },{ duration:5000 }) .animate({ top:100, borderColor:'yellow' },{ duration:2000 });
API文档参考:《推荐:动画库GSAP》
2D、3Dtransforms
旋转: rotationX rotationY rotationZ 不指定坐标默认以rotationZ旋转 {rotationX:'30deg'}
缩放: scaleX, scaleY {scaleX:'3'} //宽为原来的3倍
倾斜: skewX, skewY {skewX:'30deg'}
位移: x, y {x:'30px'}
深景色 {perspective:'500px'}
旋转中心 {transformOrigin:"left top"} {transformOrigin:"left 50% -200"} //左偏移50%又减去200
颜色渐变
字体颜色 {color:'red'}
背景颜色 {backgroundColor:'red'}
边框颜色 {borderColor:'red'}
阴影
字体阴影 { textShadow:"10px 10px 10px red"} { textShadow:"10px 10px 10px rgba(255, 255, 255, 0.5)"}
元素阴影 boxShadow: "10px 10px 10px 10px #000"
圆角
borderRadius:"25px"
图片背景定位
backgroundPosition:"-25px -25px"
clip 剪切/裁剪 //提供4种案例效果
{clip:"rect(50px 100px 50px 0px)"} //中间开始到上下展示 {clip:"rect(100px 0px 100px 0px)"} //左下开始到右上展示 {clip:"rect(50px 50px 50px 50px)"} //中间到四周 {clip:"rect(0px 100px 100px 100px)"} //右到左
禁用TweenMax效果,但保留jquery的animate自带效果
$("#box").animate({
x:'290px', //没效果
backgroundColor:'yellow', //没效果
left:'290px', //jquery自带的有效果
skipGSAP:true //禁用GSAP
}, {
duration:1000,
complete:function(){
document.title=111
}
});
className 增/删类名
$('.box').animate({ className:'+=av' //效果为clas="box av" className:'-=av' //如果之前是clas="box av" 那么现在是clas="box" });
动画停止
可以用jquery自带的stop()是兼容的