jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件
完整代码下载点击我的GitHub:
https://github.com/XingJYGo/jquery-accordion
1 手风琴的效果展示如下:

2 封装插件目录结构如下:

主要包括:HTML结构, CCS样式,JS文件以及jquary库.
3 插件封装步骤如下:
3-1首先,编写HTML静态结构:
<div id="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
3-2 然后设置CSS的手风琴样式
* {
margin: 0;
padding: 0;
list-style: none;
}
div {
width: 1200px;
height: 400px;
border: 2px solid #000;
margin: 100px auto;
}
ul {
width: 1300px;
}
li {
/*width: 240px;*/
height: 400px;
float: left;
}
3-3抽取CSS样式到jquery-accordion.css,HTML文件导入CSS样式.
<head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="jquery-accordion.css"> </head>
4 js中的代码书写
4-1 首先导入jquary库和手风琴插件的js文件.
<script src="jquery-1.12.4.js"></script> <script src="jquery.accordion.js"></script>
4-2 编写手风琴插件js文件:
手风琴插件的核心需求有:
1 .动态添加颜色的需求,以及动态计算盒子的宽度
2 .找到里面所有的li,给li注册鼠标移入事件
3. 找到最外面的大盒子,给大盒子注册鼠标移出事件
4 .自定义创建颜色对象,遍历添加颜色属性.
由于要使用jquery对象调用,所以方法要加载jquery的原型上:
所有的方法都要包含于这个函数内:
$.fn.accordion = function(obj){
}
//动态的计算每一个li的宽度
// box的宽度 / 里面li的数量
var width = this.innerWidth() / this.find('li').length; //计算宽度
this.find('li').width(width); //给每一个li赋值宽度
//处理一下用户传递进来的参数
obj.maxWidth = obj.maxWidth > 1000 ? 1000 : obj.maxWidth;
//计算其他盒子的宽度
// (整个box的宽度- 当前li的宽度) / (this.find('li').length - 1)
var minWidth = (this.innerWidth() - obj.maxWidth) / (this.find('li').length - 1);
//一旦调用方法,就把颜色传递进来
this.find('li').each(function(index, item)
//给每一个li加背景颜色
$(item).css('backgroundColor', obj.colors[index]);
})
//1.找到里面所有的li,给li注册鼠标移入事件
this.find('li').on('mouseenter', function(){
$(this).stop(true).animate({width:obj.maxWidth}).siblings()
.stop(true).animate({width: minWidth});
});
// 2. 找到最外面的大盒子,给大盒子注册鼠标移出事件
this.on('mouseleave', function(){
$(this).find('li').stop(true).animate({width : width});
});
5 最后,导入jQuery库,手风琴插件,开始创建手风琴 .
<script src="jquery-1.12.4.js"></script>
<script src="jquery.accordion.js"></script>
<script>
$('#box').accordion({
colors:['red','green','blue', 'yellow', 'pink'],
maxWidth: 800
});
</script>
jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件的更多相关文章
- 基于jQuery的时间轴鼠标悬停动画插件
之前为大家分享了很多jquery插件,这次我们要来分享一款不太常见的jQuery插件,它是一个时间轴,时间轴上的每一个点在鼠标滑过时都可以显示该点的描述信息,并且鼠标滑过时都可以产生一定的动画特效,比 ...
- 封装jQuery插件的步骤
引语:jQuery提供了很多插件,我们在开发的过程使用插件能节省时间简化开发也避免从头开始编写每个组件,单我们除了懂得使用别人已编写好的插件以外,也到懂得如何封装属于我们自己的插件,以下就是封装jQu ...
- 封装jquery插件
最近要到使用别的jquery插件,但部分功能并不能满足,为满足功能,只能对插件进行修改来满足,要修改插件,先要了解插件如何封装, 明白了如何封装插件,才能更好修改插件:如何封装插件? 1.插件封装类型 ...
- jQuery extend 实现代码封装
jQuery 有两种方式封装代码 $.extend 和 $.fn.extend,我们也称为封装插件 $.extend DEMO // 封装 $.extend({ say:function(option ...
- 原生态AJAX详解和jquery对AJAX的封装
AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...
- 封装Jquery 合并table中任何同列数据
封装代码: jQuery.fn.rowspan = function (colIdx) { //封装JQuery同列值相同合并小插件 return this.each(function () { va ...
- 使用DOM的方法获取所有li元素,然后使用jQuery()构造函数把它封装为jQuery对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery Ajax 二次封装
jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="<%=path%> ...
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题. 可能需要处理的问题:Session超时.系统500错误.普通的业务错误.权限不足. 同步请求: Sess ...
随机推荐
- 带你剖析淘宝TDDL——Matrix层的分库分表配置与实现
前言 在开始讲解淘宝的TDDL(Taobao Distribute Data Layer)技术之前,请允许笔者先吐槽一番.首先要开喷的是淘宝的社区支持做的无比的烂,TaoCode开源社区上面,几乎从来 ...
- day9-数据库操作与Paramiko模块
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 ...
- G++ 4.4.7 无法编译模板程序,Vs可以,和解?智者尾部留言,本人第一次使用vs pro,通常并且习惯在linux下写些小东西,虽然程序简单;
vs 模板编译运行Ok \ linux g++ 4.4.7编译模板测试程序,报无法定义 template <typename or class 中的 AnyType> 类型的数据 Exam ...
- java获取取前段页面的参数
request.getParameter("tnumber") document.forms[0].s_id.value;
- ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析 (转5)
原帖地址:http://blog.csdn.net/austinblog/article/details/25127533 该文将以X264编码器为例,解释说明FFMPEG是怎么调用第三方编码器来进行 ...
- 【Django】uWSGI和Gunicorn【转】
因为nginx等优秀的开源项目,有不少本来不是做服务器的同学也可以写很多服务器端的程序了.但是在聊天中会发现,大家虽然写了不少代码,但是对wsgi是什么,gunicorn是什么,反向代理又是什么并不了 ...
- js判断是否ie浏览器或者浏览器版本
var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:([\d.]+)\) like g ...
- 【300】◀▶ IDL - ENVI API
参考:ENVI API 参考:ENVI Classic Display 序号 类名称 功能说明 语法 & 举例 01 ENVI 函数 ====<<<< De ...
- Android 定时重复启动弹出窗口。
本来想着用handlerpostdelay就可以实现,没想到演示后关闭应用居然报错. 后来想到是没有了activity. ((Activity)context).isFinishing() 可以传入c ...
- How to map host ip and port to Hyper-V
1.1 Add an port proxy netsh interface portproxy add v4tov4 listenport=hostport listenaddres=ho ...