基于jQuery的淡入淡出可自動(dòng)切換的幻燈插件
更新時(shí)間:2010年08月24日 01:42:46 作者:
基于jQuery淡入淡出可自動(dòng)切換的幻燈插件,原型是前幾天寫(xiě)的一個(gè)幻燈效果,因?yàn)橐粋€(gè)小bug卡了兩天,然后清空之前寫(xiě)的代碼,重新整理思路寫(xiě)出來(lái)的. 思維是個(gè)很詭異的東西,一旦陷入某個(gè)死角,很難逃出. 惟有冷卻一些時(shí)間,完全拋開(kāi)舊的思維,才能找到新的出路.
其實(shí)就是一個(gè)幻燈效果,考慮到使用方便,就封裝成一個(gè)插件了.
插件特點(diǎn)
1. 參數(shù)高度自定義;
2. 可重復(fù)調(diào)用且與不影響;
3. 插件文件小,壓縮后僅1.04k,開(kāi)發(fā)版3.29k.
演示及下載
使用方法
1. 引入jQuery庫(kù)文件及jQuery.iFadeSlide.pack.js插件文件(若頁(yè)面有其他js文件,可與之合并以減小http請(qǐng)求),引入位置自定義;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="js/jquery.iFadeSldie.pack.js"></script>
樣式文件無(wú)須引入,若使用DEMO中的結(jié)構(gòu),可直接將樣式合并于項(xiàng)目頁(yè)面中.建議樣式自定義.
2. 在頁(yè)面中調(diào)用插件并傳入切換元素的參數(shù), 若為空或未傳入的參數(shù),均按插件中的默認(rèn)參數(shù)執(zhí)行.例如如下代碼是DEMO演示中的三組幻燈切換調(diào)用:
$(function(){
//SAMPLE-A調(diào)用---未傳入任何參數(shù),調(diào)用默認(rèn)參數(shù)
$('div#slide').iFadeSlide();
//SAMPLE-B調(diào)用---傳入新的參數(shù),將覆蓋原有參數(shù),未傳入的使用默認(rèn)值
$('div#slide_b').iFadeSlide({
field: $('div#slide_b a'),
icocon:$('div.ico_b'),
hoverCls: 'high_b',
curIndex: 2, //索引值0起始,故此處設(shè)置為第3項(xiàng)高亮
interval: 2000
});
//SAMPLE-C調(diào)用---傳入新的參數(shù),將覆蓋原有參數(shù),未傳入的使用默認(rèn)值
$('div#slide_c').iFadeSlide({
field: $('div#slide_c img'),
icocon: $('div.ico_c'),
outTime:100,
inTime: 200
});
});
注意,調(diào)用插件部分須置入插件文件引用后面.
核心代碼
;(function($){
$.fn.extend({
iFadeSlide: function(options){
//插件參數(shù)初始化
var iset={
field:$('div#slide img'), //切換元素集合
icocon:$('div.ico'), //索引容器
hoverCls:'high', //切換至當(dāng)前索引高亮顯示樣式
curIndex:0, //默認(rèn)高亮顯示的索引值,索引值為0起始
outTime:200, //元素淡出時(shí)間(ms)
inTime:300, //元素淡入時(shí)間(ms)
interval:3000 //元素切換間隔時(shí)間(ms)
};
options=options || {};
$.extend(iset,options); //合并參數(shù)對(duì)象.若options傳入有新值則覆蓋iset中對(duì)應(yīng)值,否則使用默認(rèn)值.
//根據(jù)切換元素量生成對(duì)應(yīng)的索引值列表并插入到切換區(qū)域中
var ulcon = "<ul>";
iset.field.each(function(i){
ulcon = ulcon + '<li>' + (i + 1) + '</li>';
});
ulcon += '</ul>';
iset.icocon.append(ulcon);
var ico = iset.icocon.find('li'); //索引列表集合
var size = iset.field.size(); //切換元素量
var index = 0; //初始索引值
var clearFun=null;
//淡出淡入函數(shù)
var fadeFun = function(obj){
index = ico.index(obj); //取當(dāng)前索引值
//淡出當(dāng)前可見(jiàn)元素,并通過(guò)索引值找到要淡入的元素
iset.field.filter(':visible').fadeOut(iset.outTime, function(){
iset.field.eq(index).fadeIn(iset.inTime);
});
//為當(dāng)前索引添加高亮樣式并移除同級(jí)元素中的高亮樣式
$(obj).addClass(iset.hoverCls).siblings().removeClass(iset.hoverCls);
};
//切換函數(shù)
var changeFun = function(){
index++; //累積索引值
if (index == size){index = 0}; //當(dāng)索引值等于切換元素量時(shí),初始化為0
ico.eq(index).trigger('mouseleave'); //為當(dāng)前的索引模擬鼠標(biāo)劃出元素區(qū)事件
};
//自動(dòng)切換函數(shù)
var scrollFun = function(){
clearFun = setInterval(function(){
changeFun()
}, iset.interval);
};
//停止自動(dòng)切換函數(shù)
var stopFun = function(){
clearInterval(clearFun);
};
scrollFun(); //初始自動(dòng)切換
//索引區(qū)域鼠標(biāo)劃入停止自動(dòng)切換并切換元素至當(dāng)前索引,鼠標(biāo)劃出初始化索引至當(dāng)前值(否則鼠標(biāo)劃出切換會(huì)亂)
ico.hover(function(){
stopFun();
fadeFun(this);
}, function(){
fadeFun(this);
}).eq(iset.curIndex).mouseleave(); //初始高亮顯示的索引值
//切換區(qū)域鼠標(biāo)劃入停止自動(dòng)切換,劃出繼續(xù)自動(dòng)
iset.field.hover(function(){
stopFun();
}, function(){
scrollFun();
});
}
});
})(jQuery);
其他
本插件可自由使用,包括任何形式的商業(yè)用途,但使用時(shí)請(qǐng)勿必注明版權(quán)歸屬.
歡迎提出疑問(wèn)及建議, 并期待對(duì)本插件擴(kuò)展.
測(cè)試文件打包下載 http://xiazai.jb51.net/201008/yuanma/jQuery_iFadeSlide.rar
插件特點(diǎn)
1. 參數(shù)高度自定義;
2. 可重復(fù)調(diào)用且與不影響;
3. 插件文件小,壓縮后僅1.04k,開(kāi)發(fā)版3.29k.
演示及下載
使用方法
1. 引入jQuery庫(kù)文件及jQuery.iFadeSlide.pack.js插件文件(若頁(yè)面有其他js文件,可與之合并以減小http請(qǐng)求),引入位置自定義;
復(fù)制代碼 代碼如下:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="js/jquery.iFadeSldie.pack.js"></script>
樣式文件無(wú)須引入,若使用DEMO中的結(jié)構(gòu),可直接將樣式合并于項(xiàng)目頁(yè)面中.建議樣式自定義.
2. 在頁(yè)面中調(diào)用插件并傳入切換元素的參數(shù), 若為空或未傳入的參數(shù),均按插件中的默認(rèn)參數(shù)執(zhí)行.例如如下代碼是DEMO演示中的三組幻燈切換調(diào)用:
復(fù)制代碼 代碼如下:
$(function(){
//SAMPLE-A調(diào)用---未傳入任何參數(shù),調(diào)用默認(rèn)參數(shù)
$('div#slide').iFadeSlide();
//SAMPLE-B調(diào)用---傳入新的參數(shù),將覆蓋原有參數(shù),未傳入的使用默認(rèn)值
$('div#slide_b').iFadeSlide({
field: $('div#slide_b a'),
icocon:$('div.ico_b'),
hoverCls: 'high_b',
curIndex: 2, //索引值0起始,故此處設(shè)置為第3項(xiàng)高亮
interval: 2000
});
//SAMPLE-C調(diào)用---傳入新的參數(shù),將覆蓋原有參數(shù),未傳入的使用默認(rèn)值
$('div#slide_c').iFadeSlide({
field: $('div#slide_c img'),
icocon: $('div.ico_c'),
outTime:100,
inTime: 200
});
});
注意,調(diào)用插件部分須置入插件文件引用后面.
核心代碼
復(fù)制代碼 代碼如下:
;(function($){
$.fn.extend({
iFadeSlide: function(options){
//插件參數(shù)初始化
var iset={
field:$('div#slide img'), //切換元素集合
icocon:$('div.ico'), //索引容器
hoverCls:'high', //切換至當(dāng)前索引高亮顯示樣式
curIndex:0, //默認(rèn)高亮顯示的索引值,索引值為0起始
outTime:200, //元素淡出時(shí)間(ms)
inTime:300, //元素淡入時(shí)間(ms)
interval:3000 //元素切換間隔時(shí)間(ms)
};
options=options || {};
$.extend(iset,options); //合并參數(shù)對(duì)象.若options傳入有新值則覆蓋iset中對(duì)應(yīng)值,否則使用默認(rèn)值.
//根據(jù)切換元素量生成對(duì)應(yīng)的索引值列表并插入到切換區(qū)域中
var ulcon = "<ul>";
iset.field.each(function(i){
ulcon = ulcon + '<li>' + (i + 1) + '</li>';
});
ulcon += '</ul>';
iset.icocon.append(ulcon);
var ico = iset.icocon.find('li'); //索引列表集合
var size = iset.field.size(); //切換元素量
var index = 0; //初始索引值
var clearFun=null;
//淡出淡入函數(shù)
var fadeFun = function(obj){
index = ico.index(obj); //取當(dāng)前索引值
//淡出當(dāng)前可見(jiàn)元素,并通過(guò)索引值找到要淡入的元素
iset.field.filter(':visible').fadeOut(iset.outTime, function(){
iset.field.eq(index).fadeIn(iset.inTime);
});
//為當(dāng)前索引添加高亮樣式并移除同級(jí)元素中的高亮樣式
$(obj).addClass(iset.hoverCls).siblings().removeClass(iset.hoverCls);
};
//切換函數(shù)
var changeFun = function(){
index++; //累積索引值
if (index == size){index = 0}; //當(dāng)索引值等于切換元素量時(shí),初始化為0
ico.eq(index).trigger('mouseleave'); //為當(dāng)前的索引模擬鼠標(biāo)劃出元素區(qū)事件
};
//自動(dòng)切換函數(shù)
var scrollFun = function(){
clearFun = setInterval(function(){
changeFun()
}, iset.interval);
};
//停止自動(dòng)切換函數(shù)
var stopFun = function(){
clearInterval(clearFun);
};
scrollFun(); //初始自動(dòng)切換
//索引區(qū)域鼠標(biāo)劃入停止自動(dòng)切換并切換元素至當(dāng)前索引,鼠標(biāo)劃出初始化索引至當(dāng)前值(否則鼠標(biāo)劃出切換會(huì)亂)
ico.hover(function(){
stopFun();
fadeFun(this);
}, function(){
fadeFun(this);
}).eq(iset.curIndex).mouseleave(); //初始高亮顯示的索引值
//切換區(qū)域鼠標(biāo)劃入停止自動(dòng)切換,劃出繼續(xù)自動(dòng)
iset.field.hover(function(){
stopFun();
}, function(){
scrollFun();
});
}
});
})(jQuery);
其他
本插件可自由使用,包括任何形式的商業(yè)用途,但使用時(shí)請(qǐng)勿必注明版權(quán)歸屬.
歡迎提出疑問(wèn)及建議, 并期待對(duì)本插件擴(kuò)展.
測(cè)試文件打包下載 http://xiazai.jb51.net/201008/yuanma/jQuery_iFadeSlide.rar
您可能感興趣的文章:
- jquery 淡入淡出效果的簡(jiǎn)單實(shí)現(xiàn)
- jQuery 淡入淡出、展開(kāi)收縮菜單實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)通用版鼠標(biāo)經(jīng)過(guò)淡入淡出效果
- 基于jquery實(shí)現(xiàn)的文字淡入淡出效果
- 基于jQuery實(shí)現(xiàn)淡入淡出效果輪播圖
- 基于jquery的淡入淡出選項(xiàng)卡效果代碼
- jQuery實(shí)現(xiàn)DIV層淡入淡出拖動(dòng)特效的方法
- jquery實(shí)現(xiàn)帶漸變淡入淡出并向右依次展開(kāi)的多級(jí)菜單效果實(shí)例
- jQuery實(shí)現(xiàn)圖片文字淡入淡出效果
- 原生js和jQuery實(shí)現(xiàn)淡入淡出輪播效果
- jQuery實(shí)現(xiàn)基本淡入淡出效果的方法詳解
相關(guān)文章
jquery Easyui快速開(kāi)發(fā)總結(jié)
easyui是一種基于jQuery的用戶界面插件集合,easyui為創(chuàng)建現(xiàn)代化,互動(dòng),JavaScript應(yīng)用程序,提供必要的功能,本篇文章給大家整理有關(guān)jquery Easyui快速開(kāi)發(fā)的技巧,需要的朋友可以參考下2015-08-08jQuery實(shí)現(xiàn)Flash效果上下翻動(dòng)的中英文導(dǎo)航菜單代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)Flash效果上下翻動(dòng)的中英文導(dǎo)航菜單代碼,實(shí)例分析了jQuery基于鼠標(biāo)hover事件控制頁(yè)面元素動(dòng)畫(huà)效果的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09jQuery插件FusionCharts實(shí)現(xiàn)的3D帕累托圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionCharts實(shí)現(xiàn)的3D帕累托圖效果,結(jié)合實(shí)例形式分析了jQuery使用FusionCharts載入xml數(shù)據(jù)繪制3D帕累托圖的相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jQuery+CSS實(shí)現(xiàn)的table表格行列轉(zhuǎn)置功能示例
這篇文章主要介紹了jQuery+CSS實(shí)現(xiàn)的table表格行列轉(zhuǎn)置功能,涉及jQuery事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01仿當(dāng)當(dāng)網(wǎng)淘寶網(wǎng)等主流電子商務(wù)網(wǎng)站商品分類導(dǎo)航菜單
本文實(shí)現(xiàn)了一個(gè)分類導(dǎo)航的菜單,和大多數(shù)流行的電子商務(wù)網(wǎng)站類似,詳細(xì)的實(shí)現(xiàn)可以直接查看源代碼.所有的代碼都在一個(gè)sidebar.html文件中2013-09-09