jQuery中的动画

jQuery最基本的动画方法是show()和hide()。如果为一个jQuery对象调用hide方法,则会将该对象的display样式设置为none。调用show方法会将对象的display设置为hide之前的状态:block、inline或其他除了none之外的值。

$("#panel div").show();
$("#panel div").hide();

这2个方法还接收参数,参数可以是字符串:slow,normal,fast;也可以是数字。如果不设置参数那么是不会有动画效果的,设置了参数之后,才会有动画效果。

3个字符串表示元素显示或者隐藏的时间,分别是0.6秒,0.4秒,0.2秒。如果是数字参数的话单位是毫秒。

这2个方法会同时改变元素的高度、宽度、不透明度,直接元素隐藏或才显示。最后再设置元素的display属性。

jQuery的fadeIn(),fadeOut()只改变元素的不透明度,fadeIn指在一段时间内增加元素的不透明度,直到完全显示,fadeOut则相反。

slideUp()方法只会改变元素的高度,如果一个元素的display为none,当调用slideDown方法时这个元素将由上至下延伸显示,slideUp则相反,元素将由下至上缩短隐藏。

以上几个函数均接受之前show和hide方法介绍过的参数。

除了以上可以直接使用的动画方法还可以自定义动画效果,使用animate()方法语法如下:

animate(params, speed, callback)

params是一个包含样式属性及值的映射,{proterty1: "value1", proterty2: "value2"}
speed表示速度,可选
callback是动画完成之后的回调函数,可选

比如我们先定义一个div,id为panel1,然后设置它的样式:

#panel1{
  position: relative;
  width: 100px;
  height: 100px;
  border: 1px solid red;
  background: green;
  cursor: pointer;
}

再让这个方式移动并作成一个动画效果

$("#panel1").click(function(){
  $(this).animate({left: "+=500px", height: "200px", width: "300px"}, 500);
});

将这个div样式中的left属性加500px,高度增加200,宽度增加300,动画时间设置成0.5秒。

上面的动画设置了3个效果,这3个效果会一起变化,如果想让其按顺序变,那么可以这么写

$(this).animate({left: "+=500px"}, 500).animate({height: "300px"}, 500)

这样动画就有了先后顺序,称为动画队列。

animate的第3个参数也就是回调函数,指在动画执行完毕之后执行这个函数

$(this).animate({left: "+=500px"}, 500).animate({height: "300px"}, 500, function(){
  $(this).css("border", "5px solid blue");
});

在动画执行完毕后把边框变化。

jQuery还有停止正在进行的动画的方法。如果我们为一个元素设置一个动画:在鼠标移进元素的时候执行一个动画,当鼠标移出的时候执行另外外一个动画,但是如果用户鼠标移进去之后动画还没有执行完毕用户直接将鼠标移出去了,这种情况下就要使用停止动画的API了

stop([clearQueue], [gotoEnd]);

两个参数都是可选参数,为boolean值。第1个参数表示是否要清空未执行完的动画队列,第2个参数代表是否直接将正在执行的动画跳转到末状态。

$("#panel1").hover(function(){
  $(this).stop().animate({height: "150px", width: "300px"}, 1000);
}, function(){
  $(this).stop().animate({height: "22px", width: "60px"}, 1000);
});

在hover方法中的动画之前都先调用stop()方法,实际上stop执行停止执行动画的逻辑是这样的:如果不带参数,停止执行当前动画马上执行动画队列中的下一个动画。因此如果鼠标进行执行的动画有2个及2个以上的画,鼠标移出只用不带参数的stop方法是不行的,因为有可能会执行鼠标进入响应函数中的第2个动画。

这样的情况可以将stop的第1个参数设置为true,表示清空当前的动画队列。第2个参数设置为true的话可以将元素的状态直接达到结束时的状态。通常用于后一个动画基于前一个动画的最终状态的情况。

但是需要注意stop方法第2个参数设置为true的话只能达到正在执行的动画的最终状态。比如一个元素动画队列里有3个动画需要执行,目前正在执行第1个,如果这个时候调用stop方法,那么只能将元素设置为第1个动画的最终状态。

有时候我们需要判断某个元素是否处理动画状态:

$(element).is(":animated");

如果true表示正在执行动画

如果我们为某个元素设置了多个动画,但是又希望每个动画之间延迟一定的时间,可以使用delay方法

$("#panel1").animate({height: "500px"}, 1000).delay(2000)
.animate({width: "300px"}, 500);

jQuery还提供了4个专门用于交互的动画方法。toggle(), slideToggle, fadeToggle, fadeTo,。

前3个和本章一开始讲的3组动画是一样的。toogle对应用是show和hide, slideToggle对应的是slideUp和slideDown,fadeToggle对应的是fadeIn和fadeOut。都接收2个参数,分别是速度和回调函数

fadeTo接收3个参数:速度,透明度,回调函数。这个方法把元素的透明度以渐进的方式调整到指定的值。

$(this).fadeTo(600, 0.2);

将元素在0.6秒内将透明度调整为20%。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容