十四、animate()函数
14.1 概述
animate()是基于重点状态的动画
animate():接收2个参数
第一个参数:json 表示终点状态
第二个参数:完成动画的时间。单位ms,省略不写
1 | // 让所有的p移动到left:500px;的位置 |
14.2 能够参与动画的属性
所有数值型的属性都可以参与动画
width
height
border
left、right、top、bottom
border-radius
……
不能参与动画的属性:
background-color
background-position
css3的一些复杂属性(transform)
1 | $("p").animate({ |
14.3 动画的执行顺序
14.3.1 同一元素的不同animate,是按照绑定顺序执行的
1 | // 绑定第一个动画 |
1 | $("p").animate({ |
14.3.2 不同元素的animate的执行顺序
不同元素的animate的执行顺序,同时执行
1 | // 分别绑定动画 |
14.3.3 animate()和css()的执行顺序
animate()需要花费时间
css()瞬间完成
1 | $("#box").animate({"left" : 500},2000).css("background-color","red"); |
14.4 回调函数
14.4.1 异步语句
类似于animate()这种需要花费时间的语句,如果后面还有其他js代码,这些代码会立即执行。不会死等animate()函数执行完毕之后再去执行。
异步语句都有一个回调函数,异步语句执行完毕之后要做的事要写在回调函数当中。
比如:做一个肉菜,第一步需要解冻肉。
把肉放在微波炉中进行解冻需要10min。在这期间,我们还可以洗菜、……,等到微波炉叮一声之后(叮之后就是回调函数),将肉拿出,开始做肉菜,做肉菜就是要写在回调函数中。
animate()
show(1000)
hide(1000)
slideDown()
slideUp()
fadeIn()
fadeout()
这些都是异步语句,都需要花费时间。
14.4.2 回调函数
animate({},time,callback)
第一个参数:json
第二个参数:time 完成动画的时间
callBack:回调函数
1 | // 让box运动完毕之后改变box的背景颜色 |
比如fadeIn()也可以书写回调函数:
1 | // 淡入时间为2s,淡入之后立即变色 |
14.5 delay()延迟
delay():表示延迟,只能书写在动画的前面,参数就是要延迟的时间。
animate()
show(1000)
hide(1000)
slideDown()
slideUp()
fadeIn()
fadeout()
1 | // 点击btn,让box延迟2s再执行动画 |
利用delay()可以控制元素的进场顺序
1 | // 控制元素进场顺序 |
14.6 stop()立即停止动画
stop():表示让运动的元素立即停止动画
接收2个参数:都是布尔值 默认值都是false
参数1:是否清空当前的动画队列
参数2:是否立即完成当前动画
stop(false,false) 等价方式stop() 表示立即进入下一个动画,立即停止当前动画
stop(false,true) 表示立即进入下一个动画,立即停止并完成当前动画
stop(true,true) 表示清空当前动画队列,立即停止并完成当前动画
stop(true,false) 等价方式stop(true) 表示清空当前动画队列,立即停止当前动画(最常用,点哪停哪,后面动画不再执行)
1 | $("#box").animate({"left": 500},2000); |
14.7 防止动画积累
一个元素身上可以存在多个动画事件,尤其是在不经意间就会造成动画积累,此时我们就要防止动画积累(也叫做“防流氓”)。
比如:现在有一支队伍,接到了命令,要前往广州,再去广州的路上又接到了命令,回北京。此时这支队伍有两个选择:
① 立即执行新的任务,放弃原有任务
利用stop(true)可以实现
1 | // 去广州 |
② 只有当元素不运动的时候,才接收新的任务
is()方法:表示元素是否具备某种状态
- is(“:animated”) 表示当元素运动的时候返回true,当元素不运动的时候返回false
1 | // 当元素运动的时候,不接受新的任务 |
14.8 案例:呼吸轮播图
14.8.1 DOM
1 | <div class="box" id="carouse"> |
14.8.2 css
1 | <style> |
14.8.3 jquery
1 | <!-- 引入jquery包 --> |