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插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
jQuery实现点击关注和取消功能
Jul 03 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
JQuery animate动画应用示例
May 14 jQuery
一文快速了解JQuery中的AJAX
May 31 jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
jQuery实现简单弹幕效果
Nov 28 jQuery
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
jQuery实现的分页插件完整示例
May 26 jQuery
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 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 curl 并发最佳实践代码分享
2012/09/05 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
第六章之辅组类与响应式工具
2016/04/25 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
详解Python的Django框架中的模版继承
2015/07/16 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Python如何实现远程方法调用
2020/08/07 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
西部世纪面试题
2014/12/05 面试题
中软国际Java程序员机试题
2012/08/19 面试题
工作迟到检讨书
2014/02/21 职场文书
班子四风对照检查材料
2014/08/21 职场文书
勇敢的心观后感
2015/06/09 职场文书
运动会开幕式致辞
2015/07/29 职场文书
2019大学生实习报告
2019/06/21 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
解析Redis Cluster原理
2021/06/21 Redis
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python