视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jQuery创建折叠式菜单
2020-11-27 21:55:10 责编:小采
文档


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

实现效果如下:

一、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: #37d3;
 }
 
 .accordion li.selected span { /* 折叠菜单选中项的标题样式 */
 color: #e6efee;
 background-color: #393c4b;
 }
 
 .accordion li div { /* 子菜单平时不显示 */
 display: none;
 }
 
 .accordion li.selected div { /* 添加了selected样式时才显示 */
 display: block;
 }
</style>

下载本文
显示全文
专题