在jQuery中的animate我们都知道可以实现过渡效果,但是不支持css3的某些过渡属性,例如transform下的属性。所以不得不借助第三方插件。
之前介绍过能够取代jQuery的animate效果的插件是velocity.js,功能很强大还扩展了一些功能不只是animate,但是只仅仅想取代jQuery animate功能而已推荐使用transit.min.js。
目前的版本是:
jQuery: v1.8.3
Transit: v0.9.12
中文网站:http://code.ciaoca.com/jquery/transit/
官方网站:http://ricostacruz.com/jquery.transit/
x (px) y (px) translate (x, y) rotate (deg) rotateX (deg) rotateY (deg) rotate3d (x, y, z, deg) scale (x, [y]) perspective (px) skewX (deg) skewY (deg)
基本用法: $("#box").transition({ opacity: 0.1, scale: 0.3, duration: 500, easing: 'linear', complete: function(){//回调函数} });
设置值: $("#box").css({ x: '30px'}); // translate(30px,0)向右移动 $("#box").css({ y: '60px'}); // translate(0,60px)向下移动 $("#box").css({ translate: [60, 30]}); // 向右下移动 $("#box").css({ rotate: '30deg'}); // 顺时针旋转 $("#box").css({ scale: 2}); // 放大2倍 (200%) $("#box").css({ scale: [2, 1.5]}); // 宽度和高度不同的放大 $("#box").css({ skewX: '30deg'}); // 水平斜切 $("#box").css({ skewY: '30deg'}); // 垂直斜切 $("#box").css({ perspective: 100, rotateX: 30}); // Webkit 3d 旋转 $("#box").css({ rotateY: 30}); $("#box").css({ rotate3d: [1, 1, 0, 45]});
累加: $("#box").css({ rotate: '+=30' }); // 增加30度 $("#box").css({ rotate: '-=30' }); // 减少30度
一个属性多个值设置: $("#box").css({ translate: [60,30] }); $("#box").css({ translate: ['60px','30px'] }); $("#box").css({ translate: '60px,30px' });
获取值: $("#box").css('rotate'); //=> "30deg" $("#box").css('translate'); //=> ['60px', '30px'] $("#box").css('translate').split(',')[0] //=>60px $("#box").css('translate').split(',')[1] //=>30px
与jquery写法一样: $("#box").transition({ opacity: 0.1, scale: 0.3 }); $("#box").transition({ opacity: 0.1, scale: 0.3 }, 500); // 动画时长 $("#box").transition({ opacity: 0.1, scale: 0.3 }, 'swing'); // 缓动效果 $("#box").transition({ opacity: 0.1, scale: 0.3 }, 500, 'linear'); // 动画时长 + 缓动效果 $("#box").transition({ opacity: 0.1, scale: 0.3 }, function(){}); // 回调函数 $("#box").transition({ opacity: 0.1, scale: 0.3 }, 500, 'linear', function(){}); // 任意