基于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 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
xtree.js 代码
Mar 13 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
js判断上传文件后缀名是否合法
Jan 28 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
浅谈JS的原型和继承
May 08 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 Javascript
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
PHP生成静态页面详解
2006/11/19 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
javascript打印输出json实例
2013/11/11 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
最新自我评价范文
2013/11/16 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
介绍信的格式
2015/01/30 职场文书
2015年班组工作总结
2015/04/20 职场文书
晚会开场白和结束语
2015/05/29 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers