基于jQuery的淡入淡出可自动切换的幻灯插件


Posted in Javascript onAugust 24, 2010

其实就是一个幻灯效果,考虑到使用方便,就封装成一个插件了.
插件特点
1. 参数高度自定义;
2. 可重复调用且与不影响;
3. 插件文件小,压缩后仅1.04k,开发版3.29k.
演示及下载 

使用方法
1. 引入jQuery库文件及jQuery.iFadeSlide.pack.js插件文件(若页面有其他js文件,可与之合并以减小http请求),引入位置自定义;

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script src="js/jquery.iFadeSldie.pack.js"></script>

样式文件无须引入,若使用DEMO中的结构,可直接将样式合并于项目页面中.建议样式自定义.
2. 在页面中调用插件并传入切换元素的参数, 若为空或未传入的参数,均按插件中的默认参数执行.例如如下代码是DEMO演示中的三组幻灯切换调用:
$(function(){ 
//SAMPLE-A调用---未传入任何参数,调用默认参数 
$('div#slide').iFadeSlide(); 
//SAMPLE-B调用---传入新的参数,将覆盖原有参数,未传入的使用默认值 
$('div#slide_b').iFadeSlide({ 
field: $('div#slide_b a'), 
icocon:$('div.ico_b'), 
hoverCls: 'high_b', 
curIndex: 2, //索引值0起始,故此处设置为第3项高亮 
interval: 2000 
}); 
//SAMPLE-C调用---传入新的参数,将覆盖原有参数,未传入的使用默认值 
$('div#slide_c').iFadeSlide({ 
field: $('div#slide_c img'), 
icocon: $('div.ico_c'), 
outTime:100, 
inTime: 200 
}); 
});

注意,调用插件部分须置入插件文件引用后面.
核心代码
;(function($){ 
$.fn.extend({ 
iFadeSlide: function(options){ 
//插件参数初始化 
var iset={ 
field:$('div#slide img'), //切换元素集合 
icocon:$('div.ico'), //索引容器 
hoverCls:'high', //切换至当前索引高亮显示样式 
curIndex:0, //默认高亮显示的索引值,索引值为0起始 
outTime:200, //元素淡出时间(ms) 
inTime:300, //元素淡入时间(ms) 
interval:3000 //元素切换间隔时间(ms) 
}; 
options=options || {}; 
$.extend(iset,options); //合并参数对象.若options传入有新值则覆盖iset中对应值,否则使用默认值. 
//根据切换元素量生成对应的索引值列表并插入到切换区域中 
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; 
//淡出淡入函数 
var fadeFun = function(obj){ 
index = ico.index(obj); //取当前索引值 
//淡出当前可见元素,并通过索引值找到要淡入的元素 
iset.field.filter(':visible').fadeOut(iset.outTime, function(){ 
iset.field.eq(index).fadeIn(iset.inTime); 
}); 
//为当前索引添加高亮样式并移除同级元素中的高亮样式 
$(obj).addClass(iset.hoverCls).siblings().removeClass(iset.hoverCls); 
}; 
//切换函数 
var changeFun = function(){ 
index++; //累积索引值 
if (index == size){index = 0}; //当索引值等于切换元素量时,初始化为0 
ico.eq(index).trigger('mouseleave'); //为当前的索引模拟鼠标划出元素区事件 
}; 
//自动切换函数 
var scrollFun = function(){ 
clearFun = setInterval(function(){ 
changeFun() 
}, iset.interval); 
}; 
//停止自动切换函数 
var stopFun = function(){ 
clearInterval(clearFun); 
}; 
scrollFun(); //初始自动切换 
//索引区域鼠标划入停止自动切换并切换元素至当前索引,鼠标划出初始化索引至当前值(否则鼠标划出切换会乱) 
ico.hover(function(){ 
stopFun(); 
fadeFun(this); 
}, function(){ 
fadeFun(this); 
}).eq(iset.curIndex).mouseleave(); //初始高亮显示的索引值 
//切换区域鼠标划入停止自动切换,划出继续自动 
iset.field.hover(function(){ 
stopFun(); 
}, function(){ 
scrollFun(); 
}); 
} 
}); 
})(jQuery);

其他
本插件可自由使用,包括任何形式的商业用途,但使用时请勿必注明版权归属.
欢迎提出疑问及建议, 并期待对本插件扩展.

测试文件打包下载 http://xiazai.3water.com/201008/yuanma/jQuery_iFadeSlide.rar

Javascript 相关文章推荐
js获取浏览器的可视区域尺寸的实现代码
Nov 30 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
Dec 04 Javascript
超级好用的jQuery圆角插件 Corner速成
Aug 31 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
JS中substring与substr的用法
Nov 16 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
微信开发之微信jssdk录音功能开发示例
Oct 22 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
js null,undefined,字符串小结
Aug 21 #Javascript
javascript中的float运算精度实例分析
Aug 21 #Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 #Javascript
jquery插件之easing 动态菜单
Aug 21 #Javascript
url地址自动加#号问题说明
Aug 21 #Javascript
jquery中输入验证中一个不错的效果
Aug 21 #Javascript
单独使用CKFinder选择图片的方法
Aug 21 #Javascript
You might like
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
python实现从wind导入数据
2019/12/03 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
浅谈python出错时traceback的解读
2020/07/15 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
重阳节登山活动方案
2014/02/03 职场文书
酒店总经理助理职责
2014/02/12 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
听证通知书
2015/04/24 职场文书