jQuery.Switchable是一款整合了Tabs、Slide、Scrollable等常見UI組件的jQuery插件。它有簡(jiǎn)單易用的API、可靈活配置的Configuration,支持自定義Effect,支持自主開發(fā)Plugin。
下面是jQuery.Switchable的幾個(gè)亮點(diǎn):
下面是構(gòu)建jQuery.Switchable的基本格式:
$("trigger-container-selector").switchable("panel-selector", { triggerType: "mouse", // or click effect: "default", circular: false });
trigger-container-selector
是trigger的容器,使用 jQuery Selector 獲取。trigger默認(rèn)是<a>標(biāo)簽,如果沒有獲取到,將自動(dòng)創(chuàng)建。
1st argument: panel-selector
是具體的panel元素,使用 jQuery Selector 獲取,比如:#panel > img。
2st argument: configuration
可以是一個(gè)function,或者是一個(gè)object,甚至可以省略。如果是function,那么就是僅配置beforeSwitch;如果是object,參數(shù)有如下:
property | default | description |
---|---|---|
triggers | "a" | 觸點(diǎn),默認(rèn)是<a>標(biāo)簽 |
currentCls | "current" | 當(dāng)前觸點(diǎn)的className |
initIndex | 0 | 默認(rèn)激活項(xiàng) |
triggerType | "mouse" | 觸發(fā)類型,還可以是"click" |
delay | .1 | 觸發(fā)延遲,單位是秒。默認(rèn)值即100毫秒 |
effect | "default" |
切換效果。內(nèi)置效果有: "default":最簡(jiǎn)單的顯/隱效果 "ajax":AJAX動(dòng)態(tài)加載 Panel 的內(nèi)容 你還可以自己動(dòng)手制作 Effect |
steps | 1 | 每次切換的 Panel 數(shù)量 |
visible | 1 | 可見區(qū)域的 Panel 數(shù)量 |
speed | .7 | 動(dòng)畫步時(shí),單位是秒。默認(rèn)值即700毫秒 |
easing | "swing" | 動(dòng)畫效果 |
circular | false | 循環(huán) |
vertical | false | 縱向切換 |
panelSwitch | false | 點(diǎn)擊 Panels 觸發(fā) |
beforeSwitch | null | 觸發(fā)前的 Callback |
onSwitch | null | 觸發(fā)時(shí)的 Callback |
api | false | jQuery.Switchable默認(rèn)返回的是jQuery對(duì)象。當(dāng)該屬性設(shè)置為 true 時(shí),將返回 JavaScript API |
下面是使用 API 的例子:
// 方法一: window.api = $("trigger-container-selector").switchable("panel-selector", { api: true }); // 方法二: var api = $("trigger-container-selector").switchable(); // 調(diào)用: api.next(); api.getTriggers();
所有API方法如下:
method | return value | description |
---|---|---|
getCfg() | Object | 返回 Configuration |
getTriggers() | jQuery | 返回 Triggers |
getPanels() | jQuery | 返回 Panels |
getVisiblePanel(index) | jQuery | 返回可見區(qū)域內(nèi)的 Panels |
getIndex() | Integer | 返回當(dāng)前 Trigger 的索引值 |
move(index) | API | 激活指定索引的 Trigger,索引值是從0開始的自然數(shù) |
next() | API | 觸發(fā)下一個(gè) Trigger |
prev() | API | 觸發(fā)上一個(gè) Trigger |
bind(name, fn) | API | 為 Trigger 綁定一個(gè)或者多個(gè) Callback |
unbind(name) | API | 解除綁定 |
beforeSwitch(fn) | API | 觸發(fā)前的 Callback。該Callback function的第一個(gè)參數(shù)是 jQuery.Event 對(duì)象,第二個(gè)參數(shù)是被觸發(fā)的 Trigger 的索引值 |
onSwitch(fn) | API | 觸發(fā)時(shí)的 Callback。該Callback function的第一個(gè)參數(shù)是 jQuery.Event 對(duì)象,第二個(gè)參數(shù)是被觸發(fā)的 Trigger 的索引值 |
你可以使用 $.switchable.addEffect 方法來自定義Effect。Effect可以在jQuery.Switchable被構(gòu)造前就添加,并不需要等到API加載之后。函數(shù)有兩個(gè)參數(shù),index 是當(dāng)前索引值,done 是 Effect 執(zhí)行完畢后必須調(diào)用的 function,調(diào)用方法可以是 done.call();。
$.switchable.addEffect("newEffect", function(index, done) { /* here you'll write your effect. the 'this' variable points to the API */ });
我已經(jīng)在 switchable.effect.js 中添加了"fade"和"scroll"兩個(gè)Effect:
/** * 淡隱淡現(xiàn) **/ $.switchable.addEffect("fade", function(i, done) { var self = this, cfg = self.getCfg(), items = self.getPanels(), thisItem = self.getVisiblePanel(i); items.hide(); thisItem.fadeIn(cfg.speed * 1000, done); }); /** * 滾動(dòng) * * Panel's HTML Makeup: * <container> * <wrapper> * <panel /> * <panel /> * <panel /> * </wrapper> * </container> **/ $.switchable.addEffect("scroll", function(i, done) { var self = this, cfg = self.getCfg(), thisItem = self.getVisiblePanel(i), wrap = self.getPanels().parent(), current = self.getIndex(), len = self.getTriggers().length - 1, // 從第一個(gè)反向滾動(dòng)到最后一個(gè) or 從最后一個(gè)正向滾動(dòng)到第一個(gè) isCritical = (current === 0 && i === len) || (current === len && i === 0), isBackward = (current === 0 && i === len) ? true : false, prop = cfg.vertical ? { top : -thisItem.position().top } : { left : -thisItem.position().left }; // 開始動(dòng)畫 if ( wrap.is(":animated") ) { wrap.stop(true); } wrap.animate(prop, cfg.speed * 1000, cfg.easing, function() { done.call(); // 復(fù)原位置(為了兼容plugin-carousel.js) if ( isCritical ) { self.resetPosition(isBackward); } }); });
你可以在這個(gè) Demo 頁(yè)面了解更多的具體應(yīng)用。下面是幾個(gè)官方插件:
自動(dòng)播放插件,使用該插件的方法如下:
$("trigger-container-selector").switchable("panel-selector").autoplay();
property | default | description |
---|---|---|
autoplay | true | 自動(dòng)播放 |
interval | 3 |
自動(dòng)播放間隔,單位是秒。默認(rèn)值即3000毫秒。當(dāng)插件的參數(shù)是數(shù)字時(shí),就是配置這個(gè)屬性。例如: $("trigger-container-selector").switchable("panel-selector").autoplay(1.8); |
autopause | true | 通過該屬性可以控制鼠標(biāo) mouseenter 進(jìn) panel 區(qū)域是否暫停動(dòng)畫。mouseleave 后將自動(dòng)恢復(fù)動(dòng)畫 |
api | false | 該插件默認(rèn)返回的是jQuery對(duì)象。當(dāng)該屬性設(shè)置為 true 時(shí),將返回 JavaScript API |
method | return value | description |
---|---|---|
play() | API | 開始自動(dòng)播放 |
pause() | API | 暫停播放。當(dāng) autopause 為 true 時(shí),鼠標(biāo)經(jīng)過 Panels 后將重新觸發(fā) autoplay |
stop() | API | 停止播放。必須使用 play() 方法才能重新觸發(fā) autoplay |
旋轉(zhuǎn)木馬插件,使用該插件的方法如下:
$("trigger-container-selector").switchable("panel-selector").carousel(); /* 使用該插件后,jQuery.Switchable的 circular 屬性將自動(dòng)設(shè)為 true。上面這行代碼等同于: $("trigger-container-selector").switchable("panel-selector", { circular: true }).carousel(); */
鼠標(biāo)滾珠插件,使用該插件的方法如下:
$("trigger-container-selector").switchable("panel-selector").mousewheel();
©2010 IlikejQuery.com