jquery動(dòng)畫(huà)4.升級(jí)版遮罩效果的圖片走廊--帶自動(dòng)運(yùn)行效果
更新時(shí)間:2012年08月24日 11:16:23 作者:
我將上一章中了插件做了個(gè)小小的升級(jí),實(shí)現(xiàn)了自動(dòng)運(yùn)行效果,完整代碼大家見(jiàn)demo
主要的變化點(diǎn)有:把‘下一條'、‘上一條'的click事件抽象到一個(gè)函數(shù)showNext中。添加setInterval,添加selector元素的hover事件。好了,我們一個(gè)個(gè)的看。
showNext函數(shù):
//顯示函數(shù)
function showNext(flag) {
//隱藏導(dǎo)航
$(config.selector).find('a').css('display', 'none');
//創(chuàng)建遮罩
$.tranzify.createOverlay(config);
//獲取當(dāng)前顯示狀態(tài)的圖片
var currImg = $('.' + config.visibleClass, $(config.selector));
if (flag === true) {
//當(dāng)前圖片不是第一張圖片
if (currImg.prev().filter('img').length > 0) {
//將上一張圖片設(shè)置為可顯示狀態(tài)
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass);
} else {
//設(shè)置最后一張圖片為可顯示狀態(tài)
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass);
}
} else {
//當(dāng)前圖片不是最后一張圖片
if (currImg.next().filter('img').length > 0) {
//將下一張圖片設(shè)置為可顯示狀態(tài)
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass);
} else {
//設(shè)置第一張圖片為可顯示狀態(tài)
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
}
}
//運(yùn)行遮罩效果
$.tranzify.runTransition(config);
}
之所以要把他抽出來(lái),是因?yàn)橄旅娴膕etInterval里面也要用到它,不想有太多重復(fù)的代碼,所以又必要抽出來(lái),這樣統(tǒng)一管理。接下來(lái)我們來(lái)看setIntervale。
//設(shè)置循環(huán)函數(shù)
config.interval = setInterval(showNext, (config.multi * 150) + 3000);
其實(shí)就是添加一個(gè)循環(huán)函數(shù),每個(gè)多少秒,運(yùn)行一次showNext函數(shù),顯示下一張圖片。這里要注意的一點(diǎn)是間隔時(shí)間的計(jì)算。還記得上一章中runTransition函數(shù)中給animate對(duì)象設(shè)置的間隔時(shí)間嗎?橫向顯示設(shè)置為slow,也就是600毫秒。每一幀豎向顯示設(shè)置的時(shí)間是150毫秒,一共有config.multi幀。(config.multi * 150)肯定大于600,所以我們這里就取(config.multi * 150)作為時(shí)間標(biāo)準(zhǔn)。為了防止動(dòng)畫(huà)剛運(yùn)行完,就接著顯示下一張圖片,我們加了額外的3秒鐘時(shí)間。
添加完循環(huán)函數(shù)后,我們?yōu)閟elector對(duì)象添加hover事件,當(dāng)鼠標(biāo)移動(dòng)到對(duì)象上時(shí),移出interval,鼠標(biāo)移出時(shí)添加interval。
//鼠標(biāo)移動(dòng)到對(duì)象上,移出循環(huán)函數(shù);鼠標(biāo)移出,添加循環(huán)函數(shù)
$(config.selector).hover(function () {
clearInterval(config.interval);
}, function () {
config.interval = setInterval(showNext, (config.multi * 150) + 3000);
});
這里我們要注意的是,我們把setInterval創(chuàng)造的對(duì)象傳給了config.interval。這樣做事為了保證上一步中創(chuàng)建的循環(huán)函數(shù),刪除的循環(huán)函數(shù)和刪除的循環(huán)函數(shù)是同一個(gè)對(duì)象。很忌諱把setInterval創(chuàng)建的對(duì)象直接傳給沒(méi)有聲明的interval,像這樣:
interval = setInterval(showNext, (config.multi * 150) + 3000);
這樣操作時(shí)把他傳給了window對(duì)象的interval,很容易引起代碼沖突。比如如果別的代碼或者插件里面,也創(chuàng)建了一個(gè)setInterval對(duì)象,也同樣傳給了interval(等同于window.interval),那我們插件的clearInterval就會(huì)影響到別人代碼的正常運(yùn)行,同理別人的代碼也會(huì)影響到我們。
最后為了代碼的健壯性,我們給createOverlay添加了下面的代碼,保證同時(shí)只有一個(gè)遮罩層:
//判斷是否有沒(méi)有運(yùn)行完的補(bǔ)間動(dòng)畫(huà),存在則立即結(jié)束動(dòng)畫(huà),移出對(duì)象
var transOverlay = $('#' + config.containerID);
if (transOverlay) {
transOverlay.stop(true, true);
transOverlay.remove();
}
好了,需要講解的對(duì)象都講完了,大家還是直接下demo看效果吧。
demo下載地址:jQuery.animation.tranzify_improve.js
showNext函數(shù):
復(fù)制代碼 代碼如下:
//顯示函數(shù)
function showNext(flag) {
//隱藏導(dǎo)航
$(config.selector).find('a').css('display', 'none');
//創(chuàng)建遮罩
$.tranzify.createOverlay(config);
//獲取當(dāng)前顯示狀態(tài)的圖片
var currImg = $('.' + config.visibleClass, $(config.selector));
if (flag === true) {
//當(dāng)前圖片不是第一張圖片
if (currImg.prev().filter('img').length > 0) {
//將上一張圖片設(shè)置為可顯示狀態(tài)
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass);
} else {
//設(shè)置最后一張圖片為可顯示狀態(tài)
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass);
}
} else {
//當(dāng)前圖片不是最后一張圖片
if (currImg.next().filter('img').length > 0) {
//將下一張圖片設(shè)置為可顯示狀態(tài)
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass);
} else {
//設(shè)置第一張圖片為可顯示狀態(tài)
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
}
}
//運(yùn)行遮罩效果
$.tranzify.runTransition(config);
}
之所以要把他抽出來(lái),是因?yàn)橄旅娴膕etInterval里面也要用到它,不想有太多重復(fù)的代碼,所以又必要抽出來(lái),這樣統(tǒng)一管理。接下來(lái)我們來(lái)看setIntervale。
復(fù)制代碼 代碼如下:
//設(shè)置循環(huán)函數(shù)
config.interval = setInterval(showNext, (config.multi * 150) + 3000);
其實(shí)就是添加一個(gè)循環(huán)函數(shù),每個(gè)多少秒,運(yùn)行一次showNext函數(shù),顯示下一張圖片。這里要注意的一點(diǎn)是間隔時(shí)間的計(jì)算。還記得上一章中runTransition函數(shù)中給animate對(duì)象設(shè)置的間隔時(shí)間嗎?橫向顯示設(shè)置為slow,也就是600毫秒。每一幀豎向顯示設(shè)置的時(shí)間是150毫秒,一共有config.multi幀。(config.multi * 150)肯定大于600,所以我們這里就取(config.multi * 150)作為時(shí)間標(biāo)準(zhǔn)。為了防止動(dòng)畫(huà)剛運(yùn)行完,就接著顯示下一張圖片,我們加了額外的3秒鐘時(shí)間。
添加完循環(huán)函數(shù)后,我們?yōu)閟elector對(duì)象添加hover事件,當(dāng)鼠標(biāo)移動(dòng)到對(duì)象上時(shí),移出interval,鼠標(biāo)移出時(shí)添加interval。
復(fù)制代碼 代碼如下:
//鼠標(biāo)移動(dòng)到對(duì)象上,移出循環(huán)函數(shù);鼠標(biāo)移出,添加循環(huán)函數(shù)
$(config.selector).hover(function () {
clearInterval(config.interval);
}, function () {
config.interval = setInterval(showNext, (config.multi * 150) + 3000);
});
這里我們要注意的是,我們把setInterval創(chuàng)造的對(duì)象傳給了config.interval。這樣做事為了保證上一步中創(chuàng)建的循環(huán)函數(shù),刪除的循環(huán)函數(shù)和刪除的循環(huán)函數(shù)是同一個(gè)對(duì)象。很忌諱把setInterval創(chuàng)建的對(duì)象直接傳給沒(méi)有聲明的interval,像這樣:
復(fù)制代碼 代碼如下:
interval = setInterval(showNext, (config.multi * 150) + 3000);
這樣操作時(shí)把他傳給了window對(duì)象的interval,很容易引起代碼沖突。比如如果別的代碼或者插件里面,也創(chuàng)建了一個(gè)setInterval對(duì)象,也同樣傳給了interval(等同于window.interval),那我們插件的clearInterval就會(huì)影響到別人代碼的正常運(yùn)行,同理別人的代碼也會(huì)影響到我們。
最后為了代碼的健壯性,我們給createOverlay添加了下面的代碼,保證同時(shí)只有一個(gè)遮罩層:
復(fù)制代碼 代碼如下:
//判斷是否有沒(méi)有運(yùn)行完的補(bǔ)間動(dòng)畫(huà),存在則立即結(jié)束動(dòng)畫(huà),移出對(duì)象
var transOverlay = $('#' + config.containerID);
if (transOverlay) {
transOverlay.stop(true, true);
transOverlay.remove();
}
好了,需要講解的對(duì)象都講完了,大家還是直接下demo看效果吧。
demo下載地址:jQuery.animation.tranzify_improve.js
相關(guān)文章
jquery如何改變html標(biāo)簽的樣式(兩種實(shí)現(xiàn)方法)
對(duì)于如何修飾html標(biāo)簽,這對(duì)于js來(lái)說(shuō),可以通過(guò)setAttribute來(lái)設(shè)置標(biāo)簽的屬性,通過(guò)getAttribute來(lái)得到標(biāo)簽的屬性,而在jq中當(dāng)然也可以實(shí)現(xiàn)類似的功能,方法上肯定比js要簡(jiǎn)化多了,接下來(lái)介紹實(shí)現(xiàn)方法,感興趣的朋友可以了解下2013-01-01jQuery實(shí)現(xiàn)兩列等高并自適應(yīng)高度
想要使用jQuery實(shí)現(xiàn)兩列等高并自適應(yīng)高度,其實(shí)也很簡(jiǎn)單,原理就是取得左右兩邊的高度,然后判斷這個(gè)值,把大的值賦給小的就行了。下面就跟小編一起來(lái)看下吧2016-12-12使用jQuery fancybox插件打造一個(gè)實(shí)用的數(shù)據(jù)傳輸模態(tài)彈出窗體
模態(tài)窗體已經(jīng)成為Web開(kāi)發(fā)人員設(shè)計(jì)界面時(shí)經(jīng)常要使用的傳輸數(shù)據(jù)的方式;通過(guò)模態(tài)窗口,可以提高網(wǎng)站的可用性;你可以在你的郵件里收到用戶發(fā)送的反饋消息2013-01-01jQuery對(duì)象和Javascript對(duì)象之間轉(zhuǎn)換的實(shí)例代碼
jQuery對(duì)象和Javascript對(duì)象之間轉(zhuǎn)換的實(shí)例代碼,需要的朋友可以參考一下2013-03-03jquery仿蘋(píng)果的時(shí)間/日期選擇效果
本篇文章主要介紹了jquery仿蘋(píng)果的時(shí)間/日期選擇效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03