jquery插件开发之实现jquery手风琴功能分享


Posted in Javascript onMarch 10, 2014

可用于图片或者容器,使用与常规jQuery插件调用方式无异。实现原理也不难理解,都在代码注释中。想研究的可以看下面的代码,或者样例演示。

;(function($){
    /*
     * 基于jQuery的简易手风琴切换插件
     */
    $.fn.iAccordion=function(iSet){
        var self=this;
        iSet=$.extend({Type:'mouseover',Select:'img',Cur:0,InitInterval:100,Interval:500,Easing:''},iSet||{});
        /*
         * Type: 鼠标事件类型,mouseover,click,mouseleave等
         * Select: 选择器,用以获取需要切换的元素集合
         * Cur: 默认展开元素的索引
         * InitInterval: 初始化手风琴效果动画间隔时间
         * Interval: 鼠标事件动画间隔时间
         * Easing: 动画效果,需要jQuery.easing支持,参数可参考jQuery.easing@ http://gsgd.co.uk/sandbox/jquery/easing/
         */
        var item,boxW,selectW,animateW,sIndex,animateL;
        $(self).each(function(){
            //初始化容器样式
            $(this).css({'position':'relative','overflow':'hidden'});
            item=$(this).find(iSet.Select);
            //初始化切换元素样式
            item.css({'position':'absolute','left':0,'top':0});
            boxW=$(this).outerWidth();
            selectW=item.outerWidth();
            animateW=(boxW-selectW)/(item.size()-1);
            //初始化元素排列并为元素data一个索引值
            item.each(function(i){
                $(this).animate({'left':animateW*i+'px'},iSet.InitInterval,iSet.Easing);
                $(this).data('index',i);
            }).on(iSet.Type,function(e){//绑定鼠标事件
                //获取当前元素索引值
                sIndex=$(this).data('index');
                    //鼠标事件动画,通过判断元素索引值与当前元素索引值的大小关系动画显示当前元素并动画排列
                    item.each(function(n){
                        n > sIndex ? animateL=selectW+animateW*(n-1) : animateL=animateW*n;
                        $(this).stop().animate({'left':animateL+'px'},iSet.Interval,iSet.Easing);
                    });
            }).eq(iSet.Cur).trigger(iSet.Type);
        });
    }
})(jQuery);

如何调用?
1、在页面中引入上面的插件代码;
2、$(selectmain).iAccordion({…});
3、相关参数及功能,请参考插件中的注释说明。
小小的提示,若需要定义Easing,需要导入jQuery.easing插件 ,Easing的参数即jQuery.easing的方法名称,如easeOutBounce、easeOutQuint等。

Javascript 相关文章推荐
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
JavaScript实现表格点击排序的方法
May 11 Javascript
js实现温度计时间样式代码分享
Aug 21 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
jQuery事件详解
Feb 23 Javascript
js获取json中key所对应的value值的简单方法
Jun 17 Javascript
使用JS中的Replace()方法遇到的问题小结
Oct 20 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
mpvue实现微信小程序快递单号查询代码
Apr 03 Javascript
vuex分模块后,实现获取state的值
Jul 26 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 #Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 #Javascript
js实现通用的微信分享组件示例
Mar 10 #Javascript
jquery基础教程之数组使用详解
Mar 10 #Javascript
查询json的数据结构的8种方式简介
Mar 10 #Javascript
js 3秒后跳转页面的实现代码
Mar 10 #Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 #Javascript
You might like
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
php实现每日签到功能
2018/11/29 PHP
YII框架关联查询操作示例
2019/04/29 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
python生成指定长度的随机数密码
2014/01/23 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
python 为什么说eval要慎用
2019/03/26 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python学生管理系统的实现
2020/04/05 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
项目投资合作意向书
2014/07/29 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书