jQeury淡入淡出需要注意的問題
更新時(shí)間:2010年09月08日 10:06:25 作者:
寫了好多篇的學(xué)習(xí)筆記。也該動(dòng)手練練,咱不能總是紙上談兵。最近做了其他的一些練習(xí),也是有涉及圖片淡入淡出的,使用的是animate。
前兩天看到橡樹小屋朋友發(fā)表的《JQuery 實(shí)現(xiàn)圖片輪播效果》,比較有趣,發(fā)現(xiàn)他是使用fadeIn和fadeOut實(shí)現(xiàn)圖片淡入淡出輪換的。當(dāng)時(shí)曾擔(dān)心他的例子中如果連續(xù)多次點(diǎn)擊,所產(chǎn)生的動(dòng)畫會(huì)不會(huì)有延時(shí)。但我連續(xù)點(diǎn)擊了幾下,沒看到明顯的延時(shí),就沒再多想。
眾所周知,jQuery所產(chǎn)生的動(dòng)畫效果默認(rèn)會(huì)進(jìn)入列隊(duì)的。假如:點(diǎn)擊一下,產(chǎn)生動(dòng)畫3秒鐘。然后我快速的連點(diǎn)3次。那么要等到9秒鐘,所有動(dòng)畫才能結(jié)束。animate是自定義動(dòng)畫,可以很容易的設(shè)定動(dòng)畫是否進(jìn)入列隊(duì)。但使用fadeIn和fadeOut就麻煩了。
看到有的Flash網(wǎng)站的圖標(biāo),鼠標(biāo)一放上去圖標(biāo)就緩緩變了,移開又會(huì)緩緩變回來,很是漂亮。我打算用jQuery也做做看,能不能做出類似的效果。因?yàn)樽约壕毷郑碗S便拉兩張圖片:
<div id="div">
<img id="1" src="florian.jpg" style= "position:absolute;z-index:2;left:10px;top:10px;"/>
<img id="2" src="kamil.jpg" style= "position:absolute;z-index:1;left:10px;top:10px;"/>
</div>
這樣第一張就會(huì)覆蓋第二張圖片,那我只要淡入淡出第一張圖片就能實(shí)現(xiàn)特效了。于是就使用了hover,fadeIn和fadeOut,簡單的實(shí)現(xiàn)了
$(document).ready(function () {
$("div").hover(
function () { $("#1").fadeOut(1000); },
function () { $("#1").fadeIn(1000); }
);
});
但這樣問題出來了,如果我在圖片上不停地快速的移入移出鼠標(biāo)。那么動(dòng)畫都進(jìn)入列隊(duì)了,那么動(dòng)畫就會(huì)一直在動(dòng),很是不好看。
于是我打算使用:dequeue(),定義:Removes a queued function from the front of the queue and executes it.
我想如果不停的移入移出,那么就會(huì)刪除上一個(gè)操作在列隊(duì)中的動(dòng)畫。這樣就會(huì)執(zhí)行最后的動(dòng)畫了。
function () { $("#1").dequeue().fadeOut(1000); },
function () { $("#1").dequeue().fadeIn(1000); }
可是更麻煩的情況出現(xiàn)了,當(dāng)不停地移入移出鼠標(biāo)時(shí),有時(shí)圖片都沒了,有時(shí)不變了。怎么回事?
然后又想到使用:stop(),定義:
Stops all the currently running animations on all the specified elements.
If any animations are queued to run, then they will begin immediately.
function () { $("#1").stop().fadeOut(1000); },
function () { $("#1").stop().fadeIn(1000); }
我停止前面所有的列隊(duì),總算可以了吧!但是卻出現(xiàn)了圖片淡到一半,不動(dòng)了!就像兩個(gè)圖片疊加顯示了一樣。
又是怎么回事?
直到我在stop中加參數(shù),圖片才能正常顯示。
clearqueue (可選)boolean
如果設(shè)置成true,則清空隊(duì)列??梢粤⒓唇Y(jié)束動(dòng)畫。
gotoend (可選)boolean
讓當(dāng)前正在執(zhí)行的動(dòng)畫立即完成,并且重設(shè)show和hide的原始樣式,調(diào)用回調(diào)函數(shù)等。
function () { $("#1").stop(true,true).fadeOut(1000); },
function () { $("#1").stop(true, true).fadeIn(1000); }
但這樣就會(huì)出現(xiàn)執(zhí)行完畢,突然顯示整圖的情況,就沒有了淡入淡出的那樣的效果了。
沒辦法,只有使用animate了。
function () { $("#1").stop().animate({ 'opacity': 0 }, 1000); },
function () { $("#1").stop().animate({'opacity':1}, 1000); }
或:
function () { $("#1").animate({ 'opacity': 0 }, { queue: false, duration: 1000 }); },
function () { $("#1").animate({ 'opacity': 1 }, { queue: false, duration: 1000 }); }
這才實(shí)現(xiàn)了想要的完美效果。
總結(jié)一下,使用stop和dequeue理論都是可以的,但為什么卻出錯(cuò)?我也不太清楚,估計(jì)是jQuery庫的問題吧,
這個(gè)要查原文件才找得到問題。但以后使用fadeIn和fadeOut真的注意一下。當(dāng)然,到橡樹小屋朋友的
《JQuery實(shí)現(xiàn)圖片輪播效果》肯定是個(gè)好例子,直到我把時(shí)間改到2000才看出來有延遲的。只有我故意找毛病的人才會(huì)
這么干,其他哪還有人會(huì)設(shè)這么長的時(shí)間的。有興趣的朋友可以去橡樹小屋那學(xué)習(xí)一下,既簡單又漂亮實(shí)用的例子。
眾所周知,jQuery所產(chǎn)生的動(dòng)畫效果默認(rèn)會(huì)進(jìn)入列隊(duì)的。假如:點(diǎn)擊一下,產(chǎn)生動(dòng)畫3秒鐘。然后我快速的連點(diǎn)3次。那么要等到9秒鐘,所有動(dòng)畫才能結(jié)束。animate是自定義動(dòng)畫,可以很容易的設(shè)定動(dòng)畫是否進(jìn)入列隊(duì)。但使用fadeIn和fadeOut就麻煩了。
看到有的Flash網(wǎng)站的圖標(biāo),鼠標(biāo)一放上去圖標(biāo)就緩緩變了,移開又會(huì)緩緩變回來,很是漂亮。我打算用jQuery也做做看,能不能做出類似的效果。因?yàn)樽约壕毷郑碗S便拉兩張圖片:
復(fù)制代碼 代碼如下:
<div id="div">
<img id="1" src="florian.jpg" style= "position:absolute;z-index:2;left:10px;top:10px;"/>
<img id="2" src="kamil.jpg" style= "position:absolute;z-index:1;left:10px;top:10px;"/>
</div>
這樣第一張就會(huì)覆蓋第二張圖片,那我只要淡入淡出第一張圖片就能實(shí)現(xiàn)特效了。于是就使用了hover,fadeIn和fadeOut,簡單的實(shí)現(xiàn)了
復(fù)制代碼 代碼如下:
$(document).ready(function () {
$("div").hover(
function () { $("#1").fadeOut(1000); },
function () { $("#1").fadeIn(1000); }
);
});
但這樣問題出來了,如果我在圖片上不停地快速的移入移出鼠標(biāo)。那么動(dòng)畫都進(jìn)入列隊(duì)了,那么動(dòng)畫就會(huì)一直在動(dòng),很是不好看。
于是我打算使用:dequeue(),定義:Removes a queued function from the front of the queue and executes it.
我想如果不停的移入移出,那么就會(huì)刪除上一個(gè)操作在列隊(duì)中的動(dòng)畫。這樣就會(huì)執(zhí)行最后的動(dòng)畫了。
復(fù)制代碼 代碼如下:
function () { $("#1").dequeue().fadeOut(1000); },
function () { $("#1").dequeue().fadeIn(1000); }
可是更麻煩的情況出現(xiàn)了,當(dāng)不停地移入移出鼠標(biāo)時(shí),有時(shí)圖片都沒了,有時(shí)不變了。怎么回事?
然后又想到使用:stop(),定義:
Stops all the currently running animations on all the specified elements.
If any animations are queued to run, then they will begin immediately.
復(fù)制代碼 代碼如下:
function () { $("#1").stop().fadeOut(1000); },
function () { $("#1").stop().fadeIn(1000); }
我停止前面所有的列隊(duì),總算可以了吧!但是卻出現(xiàn)了圖片淡到一半,不動(dòng)了!就像兩個(gè)圖片疊加顯示了一樣。
又是怎么回事?
直到我在stop中加參數(shù),圖片才能正常顯示。
clearqueue (可選)boolean
如果設(shè)置成true,則清空隊(duì)列??梢粤⒓唇Y(jié)束動(dòng)畫。
gotoend (可選)boolean
讓當(dāng)前正在執(zhí)行的動(dòng)畫立即完成,并且重設(shè)show和hide的原始樣式,調(diào)用回調(diào)函數(shù)等。
復(fù)制代碼 代碼如下:
function () { $("#1").stop(true,true).fadeOut(1000); },
function () { $("#1").stop(true, true).fadeIn(1000); }
但這樣就會(huì)出現(xiàn)執(zhí)行完畢,突然顯示整圖的情況,就沒有了淡入淡出的那樣的效果了。
沒辦法,只有使用animate了。
復(fù)制代碼 代碼如下:
function () { $("#1").stop().animate({ 'opacity': 0 }, 1000); },
function () { $("#1").stop().animate({'opacity':1}, 1000); }
或:
function () { $("#1").animate({ 'opacity': 0 }, { queue: false, duration: 1000 }); },
function () { $("#1").animate({ 'opacity': 1 }, { queue: false, duration: 1000 }); }
這才實(shí)現(xiàn)了想要的完美效果。
總結(jié)一下,使用stop和dequeue理論都是可以的,但為什么卻出錯(cuò)?我也不太清楚,估計(jì)是jQuery庫的問題吧,
這個(gè)要查原文件才找得到問題。但以后使用fadeIn和fadeOut真的注意一下。當(dāng)然,到橡樹小屋朋友的
《JQuery實(shí)現(xiàn)圖片輪播效果》肯定是個(gè)好例子,直到我把時(shí)間改到2000才看出來有延遲的。只有我故意找毛病的人才會(huì)
這么干,其他哪還有人會(huì)設(shè)這么長的時(shí)間的。有興趣的朋友可以去橡樹小屋那學(xué)習(xí)一下,既簡單又漂亮實(shí)用的例子。
您可能感興趣的文章:
- jQuery 淡入淡出、展開收縮菜單實(shí)現(xiàn)代碼
- 一步一步教你寫淡入淡出帶注釋的圖片輪播插件(一)
- 基于Jquery的淡入淡出的特效基礎(chǔ)練習(xí)
- js運(yùn)動(dòng)框架_包括圖片的淡入淡出效果
- js控制淡入淡出示例代碼
- 原生js實(shí)現(xiàn)fadein 和 fadeout淡入淡出效果
- JS實(shí)現(xiàn)文字鏈接感應(yīng)鼠標(biāo)淡入淡出改變顏色的方法
- 原生js和jquery實(shí)現(xiàn)圖片輪播淡入淡出效果
- js淡入淡出的圖片輪播效果代碼分享
- js淡入淡出焦點(diǎn)圖幻燈片效果代碼分享
- js如何實(shí)現(xiàn)淡入淡出效果
相關(guān)文章
jQuery中removeClass()方法用法實(shí)例
這篇文章主要介紹了jQuery中removeClass()方法用法,實(shí)例分析了removeClass()方法的功能、定義及從匹配元素刪除一個(gè)或多個(gè)類的使用技巧,需要的朋友可以參考下2015-01-01
jquery選擇器和屬性對(duì)象的操作實(shí)例分析
這篇文章主要介紹了jquery選擇器和屬性對(duì)象的操作,結(jié)合實(shí)例形式分析了jquery選擇器與頁面元素屬性相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
JQuery $.each遍歷JavaScript數(shù)組對(duì)象實(shí)例
聲明了一個(gè)JSON字符串直接遍歷,在Chrome控制臺(tái)下面報(bào)錯(cuò),解決方法是將JSON字符串轉(zhuǎn)換為JavaScript對(duì)象2014-09-09
jquery簡單倒計(jì)時(shí)實(shí)現(xiàn)方法
這篇文章主要介紹了jquery簡單倒計(jì)時(shí)實(shí)現(xiàn)方法,涉及jQuery定時(shí)函數(shù)操作及日期與實(shí)現(xiàn)的運(yùn)算技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
Jquery實(shí)現(xiàn)textarea根據(jù)文本內(nèi)容自適應(yīng)高度
本文給大家分享的是Jquery實(shí)現(xiàn)textarea根據(jù)文本內(nèi)容自適應(yīng)高度,這些在平時(shí)的項(xiàng)目中挺實(shí)用的,所以抽空封裝了一個(gè)文本框根據(jù)輸入內(nèi)容自適應(yīng)高度的插件,這里推薦給小伙伴們。2015-04-04
JQuery.dataTables表格插件添加跳轉(zhuǎn)到指定頁
這篇文章主要介紹了JQuery.dataTables表格插件添加跳轉(zhuǎn)到指定頁的解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06

