首頁 web前端 js教程 基於jquery的圖片輪播 tab切換組件_jquery

基於jquery的圖片輪播 tab切換組件_jquery

May 16, 2016 pm 05:51 PM
圖片輪播

目前只添加了scroll和none的效果,scroll即滑動的效果,可以支持x和y方向的滑動;none就是沒有任何效果,只是顯示和隱藏,後續需要添加其他效果再做擴展,寫的有點水,呵呵,在此留筆,防止遺失。
  Demo Address:http://demo.jb51.net/js/2012/sinaapp/

複製程式碼 > 程式碼如下:

/**
* 巨無霸輪播
*/
$.fn.loopSlider = function(option) {
var setting = {
// 預設顯示的順序
initIndex: 1 ,
// 加在title節點上的樣式
className: "current",
// 輪播方向,預設為x軸方向輪播
direct: "x",
// 上一張按鈕
prevBtn: "",
// 下一張按鈕
nextBtn: "",
// 上下翻頁按鈕停用的樣式
btnDisable: "disable ",
// 按鈕按下的樣式
btnTouchClass: "",
// 自動輪播
auto: false,
// 自動輪播時間間隔
timeFlag: 4000,
// 輪播效果時間
scrollTime: 350,
// 輪播效果
effect: "scroll",
// 在只有一個輪播元素的時候是否隱藏滑動按鈕
hideBtn: true,
// 是否循環輪播
cycle: true,
// 輪播的內容區的容器路徑
contentContainer: "#imgScroll",
// 輪播的內容區的節點
contentChildTag: "li",
// 標題輪播區域的容器路徑
titleContainer: "#titleScroll",
// 標題輪播區域的節點
titleChildTag: "li",
// 輪播的內容區的陣列
cont: [],
// 輪播的標題區的陣列
tabs: [] ,
// 目前輪播序號
current: 0,
// 定時器
ptr: "",
// 輪播回呼函數,每次輪播回呼函數,每次輪調用,參數為目前輪播的序號
callback: function() {
return true;
}
}
if (option) {
$.extend(setting, option);
}
// 初始化目前呼叫類型的函數
setting.currentMethod = function() {
return true;
}
var boss = $(this);
//如果不是第一個元素先輪播
if (setting.initIndex != 1) {
setting.current = setting.initIndex - 1;
}
// 取得輪播的節點清單
var childList = boss.find(setting.contentContainer " " setting.contentChildTag);
// 取得輪播標題節點清單
var titleList = boss.find(setting.titleContainer " " setting. ;
// 儲存內容區每一個輪播節點
setting.cont = childList;
// 儲存標題的輪播節點
setting.tabs = titleList;
// 如果沒有需要輪播的內容,直接回傳
if (setting.cont.length == 0) {
return;
}
// 為內容區和標題區設定index屬性
childList .each(function(index) {
$(this).attr("index", index);
titleList.eq(index).attr("index", index);
});
// 上下箭頭
var nextBtn = boss.find(setting.nextBtn);
var prevBtn = boss.find(setting.prevBtn);
// 長度
var counts = childList counts = childList .length;
// 輪播容器的父節點
var childParent = childList.parent();
var titleParent = titleList.parent();
if (childList.length setting.current = 0;
}
// 初始化
doInit();
if (childList.length return;
}
/**
* 處理無效果的切換
*/
var doScrollNone = {
process: function(i) {
childList.eq(i).css("display", "block").siblings ().css("display", "none");
titleList.eq(i).addClass(setting.className).siblings().removeClass(setting.className);
// 記錄目前顯示的節點
setting.current = i;
// 呼叫回呼函數
setting.callback(setting.current);
},
init: function() {
setting. currentMethod = doScrollNone;
bindEvent();
// 自動輪播
if (setting.auto) {
processAuto();
}
// 初始化的時候也調用回呼函數
setting.callback(setting.current);
}
};
var doScrollXY = {
c_width: 0,
c_height: 0, // 輪播元素的寬度
this.c_width = childList.width();
// 輪播元素的高度
this.c_height = childList.height();
// x軸方向輪播
if (setting.direct == "x") {
childParent.width(this.c_width * (childList.length > 1 ? counts 1 : counts));
childParent.css("left", -this.c_width * (setting.current));
} else {
childParent.height(this.c_height * (childList.length > 1 ? counts 1 : counts ));
childParent.css("top", -this.c_height * (setting.current));
}
titleList.eq(setting.current).addClass(setting.className).siblings ().removeClass(setting.className);
setting.currentMethod = doScrollXY;
// 綁定事件
bindEvent();
// 初始化的時候也呼叫回呼函數
settingting .callback(setting.current);
// 自動輪播
if (setting.auto) {
processAuto();
}
},
process: function(i , needFast) {
setting.current = i;
//alert(i)
if (setting.direct == "x") {
// 執行效果動畫
childParent. animate({
left: "-" (this.c_width * i)
},
(needFast ? 50 : setting.scrollTime),
function() {
if (setting. current == counts) {
doScrollXY.processMove("left", $(this));
}
if (setting.auto) {
processAuto();
}
}
});
} else {
childParent.animate({
top: "-" (this.c_height * i)
},
(needFast ? 50 : setting.scrollTime),
function() {
if (setting.current == counts) {
doScrollXY.processMove("top", $(this)) ;
}
if (setting.auto) {
processAuto();
}
});
}
if (i == counts) {
i = 0;
}
// 呼叫回呼函數
setting.callback(setting.current);
titleList.eq(i).addClass(setting.className).siblings().removeClass (setting.className);
},
processMove: function(direct, node) {
var childs = node.children();
for (var i = 1; i var removeNode = childs.eq(i).remove();
node.append(removeNode);
}
var first = childs.eq(0). remove();
node.append(第一個);
node.css(直接, "0");
}
};
switch (setting.effect) {
case "none":
doScrollNone.init();
休息;
案例「滾動」:
doScrollXY.init();
休息;
}
}
// 一些初始化操作
function doInit() {
childParent.css("position", "relative");
if (!setting.cycle) {
prevBtn.removeClass(setting.btnDisable );
nextBtn.removeClass(setting.btnDisable);
if (setting.current == 0) {
prevBtn.addClass(setting.btnDisable);
}
if (setting. current == counts - 1) {
nextBtn.addClass(setting.btnDisable);
}
}
// 只有一個元素,並且需要隱藏按鈕
if (childList.length prevBtn.hide();
nextBtn.hide();
}
// 複製第一個元素到最後
if (childList.length > 1) {
var cloneNode = childList.eq(0).clone();
cloneNode.attr("index", counts);
cloneNode.appendTo(childParent);
}
}
/**
* 綁定輪播事件
*/
function bindEvent() {
nextBtn && nextBtn.bind("click",
function(event) {
//按鈕已經被停用
if ($(this).hasClass(setting.btnDisable)) {
return;
}
var cur = setting.current; cur >= 0) {
prevBtn. removeClass(setting.btnDisable);
}
if (cur == counts - 2 && !setting.cycle) {
$(this).addClass (setting.btnDisable);
}
if (cur == 計數) {
setting.current = 1;
} else if (cur == 計數- 1) {
//輪播到最後一個
setting.current = counts;
} else {
setting.current = cur 1;
if (setting.ptr) {
clearInterval(setting .ptr);
setting.ptr = null
; }
$(this).addClass(setting.btnTouchClass);
setting.currentMethod.process(setting.current); );
prevBtn && prevBtn.bind("click",
function( ) {
if ($(this).hasClass(setting.btnDisable)) {
return;
}
var cur = setting.current;
if (cur nextBtn.removeClass(setting.btnDisable);
}
if (cur == 1 && !setting.循環) {
$(this).addClass(setting.btnDisable)
}
setting.current = cur == 0 ? 計數- 1 : cur - 1; ) {
clearInterval(setting.ptr);
setting.ptr = null;
$(this) .addClass(setting.btnTouchClass);
var fast = false; >if (cur == 0) {
fast = true
}
setting.currentMethod.process(setting.current, fast)
});
titleParent && titleParent.bind("click",
function(e) {
var element = $(e.target);
//取得輪播節點
while (element[ 0].tagName != titleList[0].tagName) {
element = element.parent()
}
if (setting.ptr) {
clearInterval(setting .ptr); 🎜>setting.ptr = null;
}
var index = parseInt(element.attr("index"), 10);
if (index != 0) {
prevBtn.removeClass(設定.btnDisable);
} else if (!setting.cycle) {
prevBtn.addClass(setting.btnDisable);
}
if (index != counts - 1) {
nextBtn.removeClass(setting.btnDisable);
} else if (!setting.cycle) {
nextBtn.addClass(setting.btnDisable);
}
Methodting.current.btnDisable);
}
Methodcesscurrent. (index);
});
childParent[0].ontouchstart = handleTouchStart;
// 觸摸螢幕事件
function handleTouchStart(event) {
var eltarement = $(event. );
// 取得標題節點
while (element[0].tagName != childList[0].tagName) {
element = element.parent();
}
if (event.targetTouches.length == 0) {
return;
}
var touch = event.targetTouches[0];
var startX = touch.pageX;
var startY = touch .pageY;
var moveDirect = "";
var currentPosition = setting.direct == "x" ? childParent.css("左") : childParent.css("頂部");
if ("左") : childParent.css("頂部");
if ("左") : childParent.css("頂部");
if ("左") : childParent.css("頂部");
if ("左") : childParent.css("頂部");
if ( setting.ptr) {
clearInterval(setting.ptr);
setting.ptr = null;
}
// 手指滑動事件
childParent[0].ontouchmove = handleTouchMove;
function handleTouchMove(moveEvent) {
var movetouch = moveEvent.targetTouches[0]; == 'x') {
var moveX = movetouch.pageX;
var moveY = movetouch.pageY;
var x = moveX - startX;
var y = moveY - startY
; // 這裡的目的是在左右滑動圖片的時候,阻止瀏覽器的預設事件,但是如果是上下滑動的情況,一般是滑動滾動條,不能直接就阻止瀏覽器預設事件,不然會導致使用者在上下滑動的時候頁面停止的情況,這裡設定的是在x軸方向要比在Y軸方向滑動至少多10的像素,可以有效的避免上述情況發生
if (Math.abs(x) - Math.abs (y) > 10) {
// 阻止預設的事件
moveEvent.preventDefault();
childParent.css("left", parseFloat(currentPosition) x);
moveDirect = x > 0 ? "sub": "add";
} else {
return;
}
} else {
// Y軸方向滾動
moveEvent.preventDefault();
var moveY = touch.pageY;
var y = moveY - startY;
childParent.css("top", parseFloat(currentPosition) y);
moveDirect = y > 0 ?sub": "add";
}
childParent[0].ontouchend = handleTouchEnd;
}
//手指離開螢幕
function handleTouchEnd() {
///依照手指移動的方向,判斷下一個要顯示的節點序號
var fast = false;
if (moveDirect == "add") {
if (setting.current == counts) {
setting.current = 1;
} else {
setting.current = setting.current 1;
}
} else {
if (setting.current == 0) {
setting.current = counts - 1;
fast = true;
} else {
setting.current = setting.current - 1;
}
}
// 呼叫對應的處理函數
}
}
// 呼叫對應的處理函數
setting.currentMethod.process(setting.current, fast);
childParent[0].ontouchend = null;
childParent[0].ontouchmove = null;
}
}
}
/**
* 自動輪播
*/
function processAuto() {
if (setting.ptr) {
clearInterval(setting.ptr);
setting.ptr = null;
}
// 設定輪播計時器
setting.ptr = setInterval(function() {
if (setting.current == counts) {
setting.current = 1;
} else if (setting.current == counts - 1) {
// 輪播到最後一個
setting.current = counts;
} else {
setting.current = setting.current 11 ;
}
var index = setting.current;
if (index != 0) {
prevBtn.removeClass(setting.btnDisable);
} else if (!setting.cycle) {
prevBtn.addClass(setting.btnDisable);
}
if (index != counts - 1) {
nextBtn.removeClass(setting.btnDisable);
} else if (! setting.cycle) {
nextBtn.addClass(setting.btnDisable);
}
setting.currentMethod.process(setting.current);
},
setting.timeFlaglag); >}
// 傳回一個函數,可以在呼叫返回函數,指定下一次需要輪播的圖片的序號,一般用在點擊一個小圖,然後需要查看大圖的情況下,那麼就只需要給大圖綁定一次輪播事件,再點擊某一張小圖的時候只需要呼叫函數,把對應的序號傳入即可
return function(index) {
if (index index = 0;
} else if (index >= counts) {
index = counts - 1;
}
setting.currentMethod.process(index);
}
setting.currentMethod.process(index);
} } }
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用CSS實現響應式圖片自動輪播效果的教學課程 使用CSS實現響應式圖片自動輪播效果的教學課程 Nov 21, 2023 am 08:37 AM

隨著行動裝置的普及,網頁設計需要考慮到不同終端的裝置解析度和螢幕尺寸等因素,以實現良好的使用者體驗。在實現網站的響應式設計時,常常需要使用到圖片輪播效果,以展示多張圖片在有限的視覺視窗中的內容,同時也能夠增強網站的視覺效果。本文將介紹如何使用CSS實現響應式圖片自動輪播效果,並提供程式碼範例和解析。實現思路響應式圖片輪播的實現可以透過CSS的flex佈局來實現。在

JavaScript 如何實現圖片的輪播切換效果並加入淡入淡出動畫? JavaScript 如何實現圖片的輪播切換效果並加入淡入淡出動畫? Oct 18, 2023 pm 12:12 PM

JavaScript如何實現圖片的輪播切換效果並加入淡入淡出動畫?圖片輪播是網頁設計中常見的效果之一,透過切換圖片來展示不同的內容,為使用者帶來更好的視覺體驗。在這篇文章中,我將介紹如何使用JavaScript來實現圖片的輪播切換效果,並加入淡入淡出的動畫效果。下面是具體的程式碼範例。首先,我們需要在HTML頁面中建立一個包含輪播圖的容器,並在其中加入

如何使用 PHP 實現圖片輪播和幻燈片功能 如何使用 PHP 實現圖片輪播和幻燈片功能 Sep 05, 2023 am 09:57 AM

如何使用PHP實現圖片輪播和幻燈片功能在現代網頁設計中,圖片輪播和幻燈片功能已經變得非常流行。這些功能可以為網頁增添一些動態和吸引力,提升使用者體驗。本文將介紹如何使用PHP實現圖片輪播和投影片功能,幫助讀者掌握這項技術。在HTML中建立基礎結構首先,在HTML檔案中建立基礎結構。假設我們的圖片輪播有一個容器以及幾個圖片元素。 HTML程式碼如下

如何使用HTML、CSS和jQuery製作一個動態的圖片輪播 如何使用HTML、CSS和jQuery製作一個動態的圖片輪播 Oct 25, 2023 am 10:09 AM

如何使用HTML、CSS和jQuery製作一個動態的圖片輪播在網站設計和開發中,圖片輪播是一個經常使用的功能,用於展示多張圖片或廣告橫幅。透過HTML、CSS和jQuery的結合,我們可以實現一個動態的圖片輪播效果,為網站增加活力和吸引力。本文將介紹如何使用HTML、CSS和jQuery製作一個簡單的動態圖片輪播,並提供具體的程式碼範例。第一步:設定HTML結

如何利用PHP開發一個簡單的圖片輪播功能 如何利用PHP開發一個簡單的圖片輪播功能 Sep 25, 2023 am 11:21 AM

如何利用PHP開發一個簡單的圖片輪播功能圖片輪播功能在網頁設計中十分常見,能夠給使用者呈現更好的視覺效果,提升使用者體驗。本文將介紹如何使用PHP開發一個簡單的圖片輪播功能,並給出具體的程式碼範例。首先,我們需要準備一些圖片資源作為輪播的圖片。將這些圖片放在一個資料夾內,並命名為"slider",確保資料夾路徑正確。接下來,我們需要寫一個PHP腳本來取得這些圖

如何透過WordPress外掛實現圖片輪播功能 如何透過WordPress外掛實現圖片輪播功能 Sep 06, 2023 pm 12:36 PM

如何透過WordPress外掛實現圖片輪播功能在現今的網站設計中,圖片輪播功能已成為一個常見的需求。它可以讓網站更具吸引力,並且能夠展示多張圖片,達到更好的宣傳效果。在WordPress中,我們可以透過安裝插件來實現圖片輪播功能,本文將介紹一個常見的插件,並提供程式碼範例供參考。一、外掛介紹在WordPress外掛程式庫中,有許多圖片輪播外掛程式可供選擇,其中一款常

如何利用vue和Element-plus實現圖片輪播和幻燈片展示 如何利用vue和Element-plus實現圖片輪播和幻燈片展示 Jul 18, 2023 am 10:32 AM

如何利用Vue和ElementPlus實現圖片輪播和幻燈片展示在網頁設計中,圖片輪播和幻燈片展示是常見的功能需求。而使用Vue和ElementPlus框架可以輕鬆實現這些功能。本文將介紹如何使用Vue和ElementPlus來創建一個簡單而美觀的圖片輪播和幻燈片展示組件。首先,我們要先安裝Vue和ElementPlus。在命令列中執行以下命令:

JavaScript 如何實現圖片輪播功能? JavaScript 如何實現圖片輪播功能? Oct 18, 2023 am 11:27 AM

JavaScript如何實現圖片輪播功能?圖片輪播是網頁設計中常用的功能之一,它可以顯示多張圖片,以一定的時間間隔自動切換,增加使用者的視覺體驗。在JavaScript中實作圖片輪播功能並不複雜,本文將以具體的程式碼範例來講解實作的方法。首先,我們需要在HTML中建立一個容器,用來顯示圖片和控制輪播的按鈕。可以使用以下程式碼建立一個基本的輪播容器:&lt

See all articles