slideDown : 下滑展开
slideUp:上滑收回
slideToggle : 滑动切换
slideDown()
的起点一定是display:none换句话说,只有display:none的元素,才能够调用slideDown()
动画机理:
一个display:none
的元素,瞬间显示,瞬间高度变为0,然后jQuery自己捕捉原有的height设置为动画的终点。
等价于4条语句:
1$("div").show(); //瞬间显示
2var oldHeight = $("div").css("height"); //记忆住原有的高度
3$("div").css("height",0); //瞬间变为0
4$("div").animate({"height" : oldHeight},1000); //动画!终点是oldHeight
相反的,slideUp()
的终点就是display:none;
同样的,slideDown、slideUp、slideToggle里面可以写动画时间、回调函数。
fadeIn()淡入
fadeOut()淡出
fadeTo() 淡到那个数
fadeToggle() 淡出入切换
fadeIn()
的起点是display:none;
换句话说,只有display:none的元素,才能执行fadeIn()
$("div").fadeIn(5000);
动画机理:
一个display:none
的元素,瞬间可见,然后瞬间变为opacity:0,往自己的opacity上变。如果没有设置opacity,就往1变。
fadeTo有三个参数,第一个参数是动画的时间,第二个参数是要变到的透明度,第三个参数是回调函数。
$("div").fadeTo(1000,0.3);
fadeTo的起点不一定是display:none;
stop()挺有意思的:
停止当前的animate动画,但是不清除队列,立即执行后面的animate动画:
$("div").stop();
//等价于$(“div”).stop(false,false);
停止当前的animate动画,并且清除队列,盒子留在了此时的位置:
$("div").stop(true);
//等价于$(“div”).stop(true,false);
瞬间完成当前的animate动画,并且清除队列:
$("div").stop(true,true);
瞬间完成当前的animate动画,但是不清楚队列,立即执行后面的动画:
$("div").stop(false,true);
公式:
stop(是否清除队列,是否瞬间完成当前动画)
如果没有写true或者false,默认是false
finish()瞬间完成所有动画队列!
$("div").finish();
stop可以用来防止动画的积累:
1//连续打点语法,先清除所有的动画队列,然后执行新的动画
$("div").stop(true).animate({"left":100},1000);
delay
延迟,可以使用连续打点,必须放在运动语句之前。
$("div").delay(1000).animate({"left":500},1000);
$("div").delay(1000).slideUp();
$("div").delay(1000).hide(1);
//必须写1,写1了就是运动
小窍门,让所有的img元素,都延迟不同的时间入场:
$("img").each(function(i){
//attr就表示得到标签内的属性
$(this).delay(i * 1000).fadeIn(1000);
});
is()方法表示身份探测,返回true、false。
is表示“是不是”,而不是“是”
比如,判断点击的这个p是不是有t这个类:
$("p").click(function(){
alert( $(this).is(".t") );
});
is里面可以写筛选器:
判断点击的这个p是不是序号是奇数:
$(this).is("p:odd")
判断点击的这个p是不是序号小于3:
$(this).is("p:lt(3)")
还可以写
is(":animated")
判断这个元素是否在运动中。
判断是否在运动中,可以防止动画的积累:
if($(this).children(".dropbox").is(":animated")){
return;
}
只要动画正在进行,那么我不仅受更多的命令。
我们之前学习的stop()
,哲学不一样,动画正在进行,立即停止手上的动画,执行新的命令。