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 21 jQuery
jQuery日程管理控件glDatePicker用法详解
Mar 29 jQuery
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
jQuery自定义多选下拉框效果
Jun 19 jQuery
使用jQuery实现简单的tab框实例
Aug 22 jQuery
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
jQuery替换节点元素的操作方法
Mar 18 jQuery
jQuery中复合选择器简单用法示例
Mar 31 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 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 采集程序 常用函数
2008/12/18 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
分享php多功能图片处理类
2016/05/15 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
使用Python写一个小游戏
2018/04/02 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
为什么称python为胶水语言
2020/06/16 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
小饰品店的创业计划书范文
2013/12/28 职场文书
募捐倡议书
2014/04/14 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
预备党员转正材料
2014/12/19 职场文书
盗窃案辩护词
2015/05/21 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
个人工作决心书
2015/09/22 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
python图像处理 PIL Image操作实例
2022/04/09 Python