jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件

时间:2022-05-02 17:50:44

完整代码下载点击我的GitHub:
https://github.com/XingJYGo/jquery-accordion

1 手风琴的效果展示如下:

jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件

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

jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件

主要包括: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封装 手风琴 动画插件的更多相关文章

  1. 基于jQuery的时间轴鼠标悬停动画插件

    之前为大家分享了很多jquery插件,这次我们要来分享一款不太常见的jQuery插件,它是一个时间轴,时间轴上的每一个点在鼠标滑过时都可以显示该点的描述信息,并且鼠标滑过时都可以产生一定的动画特效,比 ...

  2. 封装jQuery插件的步骤

    引语:jQuery提供了很多插件,我们在开发的过程使用插件能节省时间简化开发也避免从头开始编写每个组件,单我们除了懂得使用别人已编写好的插件以外,也到懂得如何封装属于我们自己的插件,以下就是封装jQu ...

  3. 封装jquery插件

    最近要到使用别的jquery插件,但部分功能并不能满足,为满足功能,只能对插件进行修改来满足,要修改插件,先要了解插件如何封装, 明白了如何封装插件,才能更好修改插件:如何封装插件? 1.插件封装类型 ...

  4. jQuery extend 实现代码封装

    jQuery 有两种方式封装代码 $.extend 和 $.fn.extend,我们也称为封装插件 $.extend DEMO // 封装 $.extend({ say:function(option ...

  5. 原生态AJAX详解和jquery对AJAX的封装

    AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...

  6. 封装Jquery 合并table中任何同列数据

    封装代码: jQuery.fn.rowspan = function (colIdx) { //封装JQuery同列值相同合并小插件 return this.each(function () { va ...

  7. 使用DOM的方法获取所有li元素,然后使用jQuery&lpar;&rpar;构造函数把它封装为jQuery对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. jQuery Ajax 二次封装

    jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="<%=path%&gt ...

  9. Ajax请求Session超时的解决办法:拦截器 &plus; 封装jquery的post方法

    目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题. 可能需要处理的问题:Session超时.系统500错误.普通的业务错误.权限不足. 同步请求:            Sess ...

随机推荐

  1. Dedecms include&bsol;dialog&bsol;select&lowbar;soft&lowbar;post&period;php Upload Any Files To The Specified Directory Via Variable Not Initial Flaw Bypass Extension Defence

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 综合来说,这个漏洞的根源是"register_globals = on& ...

  2. MongoDB&lpar;2&rpar;&colon;入门

    MongoDB入门教程(包含安装.常用命令.相关概念.使用技巧.常见操作等) http://www.jb51.net/article/51514.htm 这篇文章主要介绍了MongoDB入门教程,包含 ...

  3. 理解C&num;系列 &sol; 核心C&num; &sol; 枚举

    枚举 如果没有枚举 //1代表s号:2代表m号:3代表l号:4代表XL号:5代表XXL号 ; ){ //快递发M号的衣服 } 有了枚举之后 声明枚举(请原谅我使用了中文汉字) public enum ...

  4. Linux显示中文乱码解决方法

    vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB231 ...

  5. 一个基于EntityFramework Core的简单数据库访问层,适用于轻量级数据库业务

    这个访问层的代码实际上是园子里某个前辈的,本人只是觉得好使,记录了下来. 本访问层需要通过Nuget安装EntityFramework Core,不过个人认为EF 6同样可以使用. 搭配数据库,最好是 ...

  6. log4j-1&period;2&period;6升级到log4j-2&period;9&period;0

    0.工程是普通java web工程,不是maven工程.需要升级log4j 步骤发下: 1. 在build path中 移除项目对log4j-1.2.6.jar的引用,并物理删除log4j-1.2.6 ...

  7. less和sass的定义和区别

    less是单独的一种文件,可以理解为css的升级版: sass是一个相对新的编程语言,为web前端开发而生,可以用它来定义一套新的语法规则和函数: 区别: ①   表现方式不同:less基于javas ...

  8. cronolog分割tomcat日志文件

    tomcat日志备份磁盘压力解决方案,使用cronolog每日生成文件uat部署操作如下,,观察两天,下周一部署生产message系统,后续根据需求部署到其它业务线 示例方案:uat—message0 ...

  9. C&num;自定义Button按钮控件

    C#自定义Button按钮控件 在实际项目开发中经常可以遇到.net自带控件并不一定可以满足需要,因此需要自定义开发一些新的控件,自定义控件的办法也有多种,可以自己绘制线条颜色图形等进行重绘,也可以采 ...

  10. Tomcat源码学习(1)

    Tomcat源码学习(1) IntelliJ IDEA 17.3.3 导入 Tomcat 9.0.6源码 下载源码 tomcat_9.0.6 启动 IDEA. 点击 Open,选择刚才下载的文件解压后 ...