jQuery创建折叠式菜单


Posted in jQuery onJune 15, 2019

今天给大家介绍如何使用jQuery创建折叠式菜单,即通常所说的手风琴效果(accordion [əˈkɔ:rdiən])。

实现效果如下:

jQuery创建折叠式菜单

一、HTML代码结构

要实现折叠式菜单,代码相当简单,如下所示:

<ul class="accordion">
 <li class="selected">
  <span>北京景点</span>
  <div>
  <ul>
   <li>故宫</li>
   <li>十三陵</li>
   <li>圆明园</li>
   <li>长城</li>
  </ul>
  </div>
 </li>
 <li>
  <span>上海景点</span>
  <div>
  <ul>
   <li>东方明珠</li>
   <li>外滩</li>
   <li>豫园</li>
   <li>龙华寺</li>
  </ul>
  </div>
 </li>
 <li>
  <span>广州景点</span>
  <div>
  <ul>
   <li>白云山</li>
   <li>中山纪念堂</li>
   <li>华南植物园</li>
   <li>越秀公园</li>
  </ul>
  </div>
 </li>
 <li>
  <span>深圳景点</span>
  <div>
  <ul>
   <li>世界之窗</li>
   <li>东门老街</li>
   <li>海上田园旅游区</li>
   <li>中信明思克航母</li>
  </ul>
  </div>
 </li>
 <li>
  <span>厦门景点</span>
  <div>
  <ul>
   <li>鼓浪屿</li>
   <li>集美嘉庚园</li>
   <li>万石植物园</li>
   <li>方特梦幻王国</li>
  </ul>
  </div>
 </li>
</ul>

整个折叠式菜单是一个无序列表,每个菜单项是一个li。在li中,有一个span用于标题,一个div中包含了另外一个无序列表,用于子菜单。

二、jQuery代码分析

jQuery的代码也很简单,只有短短的几行:

$(function () {
  $("ul.accordion li span").on('click', function () {
  $(this).parent().siblings().removeClass('selected').find('div').hide();
  $(this).parent().addClass('selected');
  $(this).next().slideDown(500);
  });
 });

我们来分析一下。

首先,通过jQuery的选择器"ul.accordion li span"指定在菜单项的标题上点击,可以折叠菜单。

click事件处理函数的第一行代码做了两件事,一个是将其它菜单项的selected样式移除,另一个是将其它菜单项的div(包括其中的子菜单)隐藏起来。$(this).parent即span的上一级,即li。.siblings()查找它的兄弟元素,并使用链式调用首先移除其selected样式,再查找其中的div并隐藏。

第二行代码为当前点击菜单添加selected样式。

第三行代码展开当前菜单的子菜单。$(this).next()即span的下一个元素,即div(其中包含子菜单)。.slideDown(500)将子菜单向下缓缓展开,使用了CSS的动画效果,500指定动画时间为500毫秒。

三、CSS代码分析

这个折叠菜单的HTML代码和jQuery代码本身都相当简单,但CSS代码相对较长:

<style>
 body {
  font-family: Verdana, Arial, Helvetica, sans-serif;
 }
 
 .accordion,
 .accordion ul { /* 折叠菜单及其子菜单的通用样式 */
  font-size: 14px;
  font-weight: bold;
  width: 300px;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align: center;
  border: 5px solid #343b42;
 }
 
 .accordion ul {
  border: 0;
 }
 
 .accordion ul li { /* 子菜单的菜单项样式 */
  line-height: 50px;
  height: 50px;
  color: #e6efee;
  border-bottom: 1px solid #383b4c;
  background-color: #282b3a;
 }
 
 .accordion li span { /* 折叠菜单的标题样式 */
  line-height: 60px;
  display: block;
  height: 60px;
  color: #e6efee;
  border: 2px solid #343b42;
  background-color: #3789d3;
 }
 
 .accordion li.selected span { /* 折叠菜单选中项的标题样式 */
  color: #e6efee;
  background-color: #393c4b;
 }
 
 .accordion li div { /* 子菜单平时不显示 */
  display: none;
 }
 
 .accordion li.selected div { /* 添加了selected样式时才显示 */
  display: block;
 }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
基于jquery实现二级联动效果
Mar 30 jQuery
jquery.form.js异步提交表单详解
Apr 25 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
jquery插件懒加载的示例
Oct 24 jQuery
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 #jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 #jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 #jQuery
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 #jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 #jQuery
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 #jQuery
jQuery操作cookie的示例代码
Jun 05 #jQuery
You might like
php压缩文件夹最新版
2018/07/18 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Python简易版停车管理系统
2019/08/12 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
南京某公司笔试题
2013/01/27 面试题
医学生实习自荐信
2013/10/01 职场文书
护理专业推荐信
2013/11/07 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
秋游活动策划方案
2014/02/16 职场文书
股权转让意向书
2014/04/01 职场文书
感谢信模板大全
2015/01/23 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL