有些复杂的动画经过以前学到的几个动画函数是不可以实现,这时候就须要强大的animate方法了javascript
操做一个元素执行3秒的淡入动画,对比一下2组动画设置的区别css
$(elem).fadeOut(3000) $(elem).animate({ opacity:0 },3000)
显而易见,animate方法更加灵活了,能够精确的控制样式属性从而执行动画html
语法:java
.animate( properties ,[ duration ], [ easing ], [ complete ] ) .animate( properties, options )
.animate()方法容许咱们在任意的数值的CSS属性上建立动画。2种语法使用,几乎差很少了,惟一必要的属性就是一组CSS属性键值对。这组属性和用于设置.css()方法的属性键值对相似,除了属性范围作了更多限制。第二个参数开始能够单独传递多个实参也能够合并成一个对象传递了jquery
参数分解:算法
properties:一个或多个css属性的键值对所构成的Object对象。要特别注意全部用于动画的属性必须是数字的,除非另有说明;这些属性若是不是数字的将不能使用基本的jQuery功能。好比常见的,border、margin、padding、width、height、font、left、top、right、bottom、wordSpacing等等这些都是能产生动画效果的。background-color很明显不能够,由于参数是red或者GBG这样的值,很是用插件,不然正常状况下是不能只用动画效果的。注意,CSS 样式使用 DOM 名称(好比 "fontSize")来设置,而非 CSS 名称(好比 "font-size")。ide
特别注意单位,属性值的单位像素(px),除非另有说明。单位em 和 %须要指定使用函数
.animate({ left: 50, width: '50px' opacity: 'show', fontSize: "10em", }, 500);
除了定义数值,每一个属性能使用'show', 'hide', 和 'toggle'。这些快捷方式容许定制隐藏和显示动画用来控制元素的显示或隐藏性能
.animate({ width: "toggle" });
若是提供一个以+= 或 -=开始的值,那么目标值就是以这个属性的当前值加上或者减去给定的数字来计算的动画
.animate({ left: '+=50px' }, "slow");
duration时间
动画执行的时间,持续时间是以毫秒为单位的;值越大表示动画执行的越慢,不是越快。还能够提供'fast' 和 'slow'字符串,分别表示持续时间为200 和 600毫秒。
easing动画运动的算法
jQuery库中默认调用 swing。若是须要其余的动画算法,请查找相关的插件
complete回调
动画完成时执行的函数,这个能够保证当前动画肯定完成后发会触发
具体能够参考下面的代码效果:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> p { color: red; } div{ width:200px; height: 100px; background-color: yellow; color:red; } </style> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>animate(上)</h2> <p>慕课网,专一分享</p> <div id="aaron">内部动画</div> 点击观察动画效果: <select id="animation"> <option value="1">动画1</option> <option value="2">动画2</option> <option value="3">动画3</option> <option value="4">动画4</option> </select> <input id="exec" type="button" value="执行动画"> <script type="text/javascript"> $("#exec").click(function() { var v = $("#animation").val(); var $aaron = $("#aaron"); if (v == "1") { // 数值的单位默认是px $aaron.animate({ width :300, height :300 }); } else if (v == "2") { // 在现有高度的基础上增长100px $aaron.animate({ width : "+=100px", height : "+=100px" }); } else if (v == "3") { $aaron.animate({ fontSize: "5em" }, 2000, function() { alert("动画 fontSize执行完毕!"); }); } else if (v == "4") { //经过toggle参数切换高度 $aaron.animate({ width: "toggle" }); } }); </script> </body> </html>
CSS样式css{"fontSize",15px}或者css{"font-size",15px}均可以,可是用后者则必须有双引号。
15px这个,要么,直接使用15, 在底层会自动为你加上px, 要么.,15px要加上引号,不然jquery没法识别,会被看成一个无效字符的.
JQ官方声明:animate不能对bakcground和backgroundColor进行操做