首頁 > web前端 > js教程 > jquery動畫4.升級版遮罩效果的圖片走廊--附自動運轉效果_jquery

jquery動畫4.升級版遮罩效果的圖片走廊--附自動運轉效果_jquery

WBOY
發布: 2016-05-16 17:50:32
原創
1038 人瀏覽過

主要的變化點有:把『下一條』、『上一條』的click事件抽像到一個函數showNext中。新增setInterval,新增selector元素的hover事件。好了,我們一個個的看。
showNext函數:

複製程式碼 程式碼如下:
/顯示函數function showNext(flag) {
//隱藏導覽
$(config.selector).find('a').css('display', 'none');
//建立遮罩
$.tranzify.createOverlay(config);

//取得目前顯示狀態的圖​​片
var currImg = $('.' config.visibleClass, $(config.selector));

if (flag === true) {
//目前圖片不是第一張圖片
if (currImg.prev().filter('img').length > 0) {
//將上一張圖片設定為可顯示狀態
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass);
} else {
//設定最後圖片為可顯示狀態
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass);
}
} else {
//目前圖片不是最後一張圖片
if (currImg.next().filter('img').length > 0) {
//將下一張圖片設定為可顯示狀態
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass);
} else {
//設定第一張圖片為可顯示狀態
currImg.removeClass(config.visibleClass);
$(config.selector).find('img').eq(0).addClass(config.visibleClass);
}
}

//運行遮罩效果
$.tranzify.runTransition(config);
}


之所以要把他抽出來,是因為下面的setInterval裡面也要用到它,不想有太多重複的程式碼,所以又必要抽出來,這樣統一管理。接下來我們來看setIntervale。


複製程式碼 程式碼如下:
//設定循環函數
config.interval setInterval(showNext, (config.multi * 150) 3000);  


其實就是增加一個循環函數,每個多少秒,執行一次showNext函數,顯示下一張圖片。這裡要注意的一點是間隔時間的計算。還記得上一章中runTransition函數中給animate物件設定的間隔時間嗎?橫向顯示設定為slow,也就是600毫秒。每一幀垂直顯示設定的時間是150毫秒,一共有config.multi幀。 (config.multi * 150)一定大於600,所以我們這裡就取(config.multi * 150)作為時間標準。為了防止動畫剛運行完,就接著顯示下一張圖片,我們增加了額外的3秒鐘。

  加入完循環函數後,我們為selector物件新增hover事件,當滑鼠移到物件上時,移出interval,滑鼠移出時新增interval。


複製程式碼 程式碼如下:
//老鼠移到物件上,移出循環函數;滑鼠移出,新增循環函數
$(config.selector).hover(function () {
  clearInterval(config.interval);
}, function () {
 config.inter showNext, (config.multi * 150) 3000);
});  


這裡我們要注意的是,我們把setInterval創造的物件傳給了config.interval。這樣做事為了確保上一個步驟所建立的循環函數,刪除的循環函數和刪除的循環函數是同一個物件。很忌諱把setInterval建立的物件直接傳給沒有宣告的interval,像這樣:


複製程式碼 程式碼如下:
interval = setInterval(showNext, (config.multi * 150) 3000);  


這樣操作時把他傳給了window物件的interval,很容易引起程式碼衝突。例如如果別的程式碼或插件裡面,也創建了一個setInterval對象,也同樣傳給了interval(等同於window.interval),那我們插件的clearInterval就會影響到別人程式碼的正常運行,同理別人的程式碼也會影響到我們。

最後為了程式碼的健全性,我們為createOverlay加入了下面的程式碼,保證同時只有一個遮罩層:


複製程式碼 程式碼如下:

//判斷是否有沒有完成的補間動畫,存在則立即結束動畫,移出物件
var transOverlay = $('#' config.containerID);
if (transOverlay) {
  transOverlay.stop(true, true);
  transOverlay.remove();
}

大家都講完了,需要講解的對像都講完了,還是直接講完了demo看效果吧。
demo下載位址:jQuery.animation.tranzify_improve.js
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板