摘要:參數(shù)代表回調(diào)函數(shù)。參數(shù)為變化樣式的對(duì)象必傳,速度可選,回調(diào)函數(shù)可選。這是,肯定會(huì)想到采用回調(diào)函數(shù)來(lái)解決。確實(shí)可以解決問(wèn)題,但是當(dāng)列隊(duì)動(dòng)畫(huà)變多時(shí),回調(diào)函數(shù)的可讀性大大降低確實(shí)一個(gè)非常煩人的問(wèn)題。提供了一個(gè)類似于回調(diào)函數(shù)的方法。
jQuery-動(dòng)畫(huà)效果淺析
動(dòng)畫(huà)可以給網(wǎng)站的用戶體驗(yàn)加分,讓網(wǎng)頁(yè)更加活潑。不過(guò),什么東西都需要適量,簡(jiǎn)易快捷的動(dòng)畫(huà)會(huì)給網(wǎng)站加分不少。比如購(gòu)物網(wǎng)站的個(gè)人中心按鈕hover效果啊,各種hover產(chǎn)生的動(dòng)畫(huà)等。不過(guò),現(xiàn)在CSS3的新特性可以模擬很多動(dòng)畫(huà),可以多用CSS3去實(shí)現(xiàn)一些動(dòng)畫(huà)效果了。比如box-shadow,text-shaow,animation,transform等。jquery作為全明星級(jí)別插件,是有很強(qiáng)的動(dòng)畫(huà)功能的。
全局屬性jQuery在動(dòng)畫(huà)中提供了兩個(gè)全局屬性(不常在代碼中使用),分別為:
$.fx.interval,設(shè)置每秒運(yùn)行的幀數(shù),默認(rèn)13ms,越小越流暢,但太小耗費(fèi)瀏覽器性能
$.fx.off,關(guān)閉頁(yè)面上所有的動(dòng)畫(huà),瀏覽器不支持動(dòng)畫(huà)時(shí)可以全部關(guān)掉。
$.fx.interval = 100; //默認(rèn)為13 $.fx.off = true; //默認(rèn)false
那么,我們看看jquery都提供了哪些動(dòng)畫(huà)方法。
顯示&&隱藏jQuery 中顯示方法為:.show(speed,callback),隱藏方法為:.hide(speed,callback)。在無(wú)參數(shù)的時(shí)候,只是硬性的顯示內(nèi)容和隱藏內(nèi)容。
$(".show").click(function () { $(".xzavier").show(); }); $(".hide").click(function () { $(".xzavier").hide(); });
兩個(gè)可選參數(shù)。參數(shù)speed,毫秒,表示運(yùn)動(dòng)所花時(shí)間,用速度來(lái)說(shuō)更切合動(dòng)畫(huà)一詞。可以是number,也可以是這個(gè)三個(gè)參數(shù)字符串:slow、normal 和fast,分別對(duì)應(yīng)600ms、400 ms和200ms。如果傳參錯(cuò)誤或者不傳,默認(rèn)normal,即400ms。參數(shù)callback代表回調(diào)函數(shù)。
$(".show").click(function () { $(".xzavier").show("fast"); }); $(".show").click(function () { $(".xzavier").show(""); //normal }); $(".show").click(function () { $(".xzavier").show("fast", function () { console.log("animation is over"); //其他可執(zhí)行代碼 }); });
原理上,.hide(speed,callback)方法其實(shí)就是在行內(nèi)設(shè)置CSS 代碼:display:none; 而.show(speed,callback)方法要根據(jù)原來(lái)元素是區(qū)塊還是內(nèi)聯(lián)來(lái)決定,如果是區(qū)塊,則設(shè)置CSS 代碼:display:block; 如果是內(nèi)聯(lián),則設(shè)置CSS 代碼:display:inline。
.show()和.hide()的在同一元素的時(shí)候,需要一個(gè)按鈕切換操作,或者需要進(jìn)行一些條件判
斷。而jQuery 提供給我們一個(gè)類似功能的獨(dú)立方法:.toggle(speed,callback),自動(dòng)切換。
$(".toggle").click(function () { $(this).toggle("fast"); });收縮&&展開(kāi)
jQuery 提供了一組改變?cè)馗叨鹊姆椒ǎ?slideUp(speed,callback),向上收縮、.slideDown(speed,callback),向下展開(kāi)和.slideToggle(speed,callback),自動(dòng)切換。
$(".slidedown").click(function () { $(".xzavier").slideDown("slow"); }); $(".slideup").click(function () { $(".xzavier").slideUp(); }); $(".slidetoggle").click(function () { $(".xzavier").slideToggle("fast"); });淡入&&淡出
jQuery 提供了一組專門(mén)用于透明度變化的方法:.fadeIn(speed,callback),淡入、.fadeOut(speed,callback),淡出、.fadeToggle(speed,callback),自動(dòng)切換。
$(".fadein").click(function () { $(".xzavier").fadeIn("slow"); }); $(".fadeout").click(function () { $(".xzavier").fadeOut(); }); $(".fadetoggle").click(function () { $(".xzavier").fadeToggle("fast"); });
這三個(gè)方法只能透明度變化只能從0 到100,或者從100 到0。不能自己設(shè)定變化到一個(gè)值。不過(guò),jQuery提供了.fadeTo(speed,opacity,callback)方法解決了這個(gè)問(wèn)題。
$(".fadeto").click(function () { $(".xzavier").fadeTo("1000", 0.4); //0.4代表上面方法的30 });
如果本身透明度大于指定值,會(huì)淡出,否則相反。
自定義動(dòng)畫(huà)jQuery提供了幾種簡(jiǎn)單常用的固定動(dòng)畫(huà)方法供開(kāi)發(fā)使用。隨著業(yè)務(wù)邏輯的復(fù)雜,這些簡(jiǎn)單動(dòng)畫(huà)無(wú)法滿足我們更加復(fù)雜的需求。這時(shí),開(kāi)發(fā)可以使用jQuery提供了一個(gè).animate(params,speed,easing,callback);方法來(lái)創(chuàng)建我效果更為復(fù)雜的自定義動(dòng)畫(huà)。
參數(shù)為:CSS變化樣式的對(duì)象(必傳),速度(可選),回調(diào)函數(shù)(可選)。easing后面解釋。
.xzavier {width:200px;height:100px;opacity:1;} $(".animate").click(function () { $(".xzavier").animate({ "width" : "800px", "height" : "400px", "opacity" : 0.3 }); });
class為xzavier的盒子多重動(dòng)畫(huà)同步運(yùn)動(dòng)。變寬,變長(zhǎng),變淡。
$(".animate").click(function () { $(".xzavier").animate({ "top" : "400px", "left" : "200px" }); });
如果元素位置需要運(yùn)動(dòng)變化,需要設(shè)置元素的position為absolute。
jQuery還提供了自定義動(dòng)畫(huà)的累加、累減功能。
$(".animate").click(function () { $(".xzavier").animate({ "top" : "+=100px", "left" : "+=100px" }); });
包括jquery固定的幾個(gè)動(dòng)畫(huà)在內(nèi),都有可選參數(shù)easing,即運(yùn)動(dòng)方式,seasing有兩個(gè)值:swing(緩動(dòng))、linear(勻速),默認(rèn)為swing。不過(guò)這個(gè)參數(shù)很少用到O(∩_∩)O~
$(".animate").click(function () { $(".xzaiver").animate({ left : "800px" }, "slow", "swing"); $(".xzavier").animate({ top : "40px" }, "fast", "linear"); });列隊(duì)動(dòng)畫(huà)
自定義實(shí)現(xiàn)列隊(duì)動(dòng)畫(huà)的方式,有3種:
1.在回調(diào)函數(shù)中再執(zhí)行一個(gè)動(dòng)畫(huà)
$(".animate").click(function () { $(".xzavier").animate({ "left" : "800px" }, function () { $(".xzavier").animate({ "top" : "400px" }, function () { $(".xzavier").animate({ "opacity" : 0.3 }); }); }); });
2.通過(guò)連綴來(lái)實(shí)現(xiàn)列隊(duì)動(dòng)畫(huà)
$(".animate").click(function () { $(".xzavier").animate({ "left" : "800px" }).animate({ "top" : "400px" }).animate({ "opacity" : 0.3 }); });
3.通過(guò)順序來(lái)實(shí)現(xiàn)列隊(duì)動(dòng)畫(huà)(需要時(shí)同一元素動(dòng)畫(huà),否則,就是同步動(dòng)畫(huà))
$(".animate").click(function () { $(".xzavier").animate({"left" : "100px"}); $(".xzavier").animate({"top" : "100px"}); $(".xzavier").animate({"opacity" : 0.3}); });
這樣來(lái)看,我們更傾向于后面兩種寫(xiě)法,因?yàn)榍短锥嗔司统霈F(xiàn)了}}}}}}}}}}
連綴非動(dòng)畫(huà)方法先看個(gè)問(wèn)題:
//連綴 $(".xzavier").slideUp().slideDown().css("background", "#ccc");
這里面css方法并不是動(dòng)畫(huà)方法,不會(huì)排在列隊(duì)之后執(zhí)行,但是,我們又需要它在前面動(dòng)畫(huà)執(zhí)行之后再執(zhí)行。這是,肯定會(huì)想到采用回調(diào)函數(shù)來(lái)解決。
$(".xzavier").slideUp().slideDown(function () { $(this).css("background", "#ccc"); });
確實(shí)可以解決問(wèn)題,但是當(dāng)列隊(duì)動(dòng)畫(huà)變多時(shí),回調(diào)函數(shù)}}}}}}}}}}的可讀性大大降低確實(shí)一個(gè)非常煩人的問(wèn)題。jQuery 提供了一個(gè)類似于回調(diào)函數(shù)的方法:.queue()。.queue()方法將css方法跟隨動(dòng)畫(huà)方法之后。如果還需繼續(xù)調(diào)用動(dòng)畫(huà)方法,使用.dequeue()方法。
$(".xzavier").slideUp(); $(".xzavier").slideDown(); $(".xzavier").queue(function () { $(this).css("background", "#ccc"); $(this).dequeue(); }) $(".xzavier").hide("slow");停止動(dòng)畫(huà)&&延遲動(dòng)畫(huà)
停止正在運(yùn)行中的動(dòng)畫(huà):.stop()方法。可選參數(shù):clearQueue, gotoEnd。clearQueue 傳遞一個(gè)布爾值,代表是否清空未執(zhí)行完的動(dòng)畫(huà)列隊(duì),gotoEnd 代表是否直接將正在執(zhí)行的動(dòng)畫(huà)跳轉(zhuǎn)到末狀態(tài)。
$(".stop").click(function () { $(".xzavier").stop(true ,true); });
延遲執(zhí)行動(dòng)畫(huà):.delay()方法。可以在動(dòng)畫(huà)之前設(shè)置延遲,也可以在列隊(duì)動(dòng)畫(huà)設(shè)置。
$(".animate").click(function () { $(".xzavier").delay(1000).animate({ "opacity" : 0.3 }, 1000); $(".xzavier").delay(1000).animate({ "width" : "800px" }, 1000); $(".xzavier").animate({ "height" : "400px" }, 1000); });
周末好天氣,打籃球去咯。代碼,籃球,生活...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80202.html
摘要:選擇器淺析最核心的組成部分就是選擇器引擎,選擇器引擎占了很大一部分。它繼承了的語(yǔ)法,可以對(duì)元素的標(biāo)簽名屬性名狀態(tài)等進(jìn)行快速準(zhǔn)確的選擇,并且不必?fù)?dān)心瀏覽器的兼容性。在構(gòu)造選擇器時(shí),盡量簡(jiǎn)單,只保證必要的確定性。 jQuery-選擇器淺析 jQuery 最核心的組成部分就是:選擇器引擎,選擇器引擎Sizzle占了jQuery很大一部分。它繼承了CSS 的語(yǔ)法,可以對(duì)DOM 元素的標(biāo)簽名、屬...
摘要:熟悉了插件的組織結(jié)構(gòu)以及比較統(tǒng)一的修改和學(xué)習(xí)方法。項(xiàng)目結(jié)束后,抽時(shí)間專門(mén)學(xué)習(xí)的進(jìn)一步知識(shí)。對(duì)于選擇器的性能,自己在看到了類似問(wèn)題無(wú)人回答,好奇之下自己測(cè)試了與的速度,并被網(wǎng)友指出使用不當(dāng)。 智營(yíng)銷(xiāo)項(xiàng)目中開(kāi)始嘗試使用jQuery并獲得了很大的幫助,項(xiàng)目結(jié)束之后專門(mén)花時(shí)間認(rèn)真看本書(shū),配合網(wǎng)上搜索的一些知識(shí)和源碼,收獲很大。首先就是在項(xiàng)目中實(shí)戰(zhàn)邊學(xué)邊用了DOM的系列操作,并踩了JQ attr...
摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 1061·2023-04-26 02:02
閱讀 2401·2021-09-26 10:11
閱讀 3553·2019-08-30 13:10
閱讀 3743·2019-08-29 17:12
閱讀 720·2019-08-29 14:20
閱讀 2187·2019-08-28 18:19
閱讀 2230·2019-08-26 13:52
閱讀 954·2019-08-26 13:43