jquery实现具有收缩功能的垂直导航菜单


Posted in Javascript onFebruary 16, 2016

本文介绍一种比较常见的导航菜单是如何实现的,它具有垂直结构,点击导航主标题可以展开或者折叠二级菜单。
代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>垂直导航菜单</title>
<style type="text/css">
body{
 margin:0;
 padding:0 0 12px 0;
 font-size:12px;
 line-height:22px;
 font-family:"\5b8b\4f53", "Arial Narrow";
 background:#fff;
}
form, ul, li, p, h1, h2, h3, h4, h5, h6{
 margin:0;
 padding:0;
}
input, select{
 font-size:12px;
 line-height:16px;
}
img{border:0;}
ul, li{list-style-type:none;}
a{
 color:#00007F;
 text-decoration:none;
}
a:hover{
 color:#bd0a01;
 text-decoration:underline;
}
.box{
 width:150px;
 margin:0 auto;
}
.menu{
 overflow:hidden;
 border-color:#C4D5DF;
 border-style:solid;
 border-width:0 1px 1px;
}
.menu li.level1 a{
 display:block;
 height:28px;
 line-height:28px;
 background:#EBF3F8;
 font-weight:700;
 color:#5893B7;
 text-indent:14px;
 border-top:1px solid #C4D5DF;
}
.menu li.level1 a:hover{
 text-decoration:none;
}
.menu li.level1 a.current{
 background:#B1D7EF;
}
 
.menu li ul{
 overflow:hidden;
}
.menu li ul.level2{
 display:none;
}
.menu li ul.level2 li a{
 display:block;
 height:28px;
 line-height:28px;
 background:#ffffff;
 font-weight:400;
 color:#42556B;
 text-indent:18px;
 border-top:0px solid #ffffff;
 overflow:hidden;
}
.menu li ul.level2 li a:hover {
    color:#f60;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $(".level1 > a").click(function(){
  $(this).addClass("current") 
  .next().show() 
  .parent().siblings().children("a").removeClass("current")
  .next().hide(); 
  return false;
 }); 
});
</script>
</head>
<body>
<div class="box">
 <ul class="menu">
  <li class="level1"> 
   <a href="#none">前端专区</a>
   <ul class="level2">
    <li><a href="#none">html教程</a></li>
    <li><a href="#none" >css教程</a></li>
    <li><a href="#none" >div教程</a></li>
    <li><a href="#none" >jquery教程</a></li>
   </ul>
  </li>
  <li class="level1"> 
   <a href="#none">资源专区</a>
   <ul class="level2">
    <li><a href="#none">特效下载</a></li>
    <li><a href="#none">电脑特效</a></li>
    <li><a href="#none">手机特效</a></li>
    <li><a href="#none">图片下载</a></li>
   </ul>
  </li>
  <li class="level1"> 
  <a href="#none">蚂蚁部落</a>
   <ul class="level2">
    <li><a href="#none">前端专区</a></li>
    <li><a href="#none">特效专区</a></li>
    <li><a href="#none">站长交流</a></li>
    <li><a href="#none">管理专区</a></li>
   </ul>
  </li>
 </ul>
</div>
</body>
</html>

上面的代码实现了垂直导航菜单效果,下面介绍一下它的实现过程。
一.实现过程分解:
1.<div class="box"></div>最外层的box元素能够将整个导航栏实现了水平居中效果,css代码如下:

.box{
 width:150px;
 margin:0 auto;
}

2.折叠菜单的结构布局:

<li class="level1"> 
 <a href="#none">前端专区</a>
 <ul class="level2">
  <li><a href="#none">html教程</a></li>
  <li><a href="#none" >css教程</a></li>
  <li><a href="#none" >div教程</a></li>
  <li><a href="#none" >jquery教程</a></li>
 </ul>
</li>

上面的代码是折叠菜单的结构,作为主导航的链接a被使用display:block设置为块级元素,这样就可以设置它的尺寸,同时在默认状态下,作为二级菜单的ul元素是隐藏的,也就是说二级菜单是折叠的。
二.jquery代码注释:
1.$(document).ready(function(){}),当文档结构完全加载完毕再去执行函数中的代码。
2.$(".level1 > a").click(function(){}),为class属性值为level1元素下的一级a元素注册click事件处理函数,也就是为主导航链接注册事件处理函数。
3.$(this).addClass("current").next().show().parent().siblings().children("a").removeClass("current").next().hide(),这段代码是一个链式调用效果,实现了点击主导航链接实现当前点击主导航后面的二级菜单展开,其他菜单折叠效果。
4.return false,取消主导航链接的跳转效果。

以上就是本文的全部内容,希望对大家学习jquery程序设计有所帮助。

Javascript 相关文章推荐
javascript jQuery插件练习
Dec 24 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
jQuery实现 注册时选择阅读条款 左右移动
Apr 11 Javascript
css样式标签和js语法属性区别
Nov 06 Javascript
灵活的理解JavaScript中的this指向
Feb 25 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
May 11 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
Oct 25 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
node 使用 async 控制并发的方法
May 07 Javascript
angularJS开发注意事项
May 26 Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 Javascript
Vue自定义全局弹窗组件操作
Aug 11 Javascript
学习使用AngularJS文件上传控件
Feb 16 #Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 #Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 #Javascript
仅30行代码实现Javascript中的MVC
Feb 15 #Javascript
理解javascript中的with关键字
Feb 15 #Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 #Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 #Javascript
You might like
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python制作Windows系统服务
2017/03/25 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python求离散序列导数的示例
2019/07/10 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
2013年保送生自荐信格式
2013/11/20 职场文书
超市业务员岗位职责
2013/12/05 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
排查整治工作方案
2014/06/09 职场文书
天地会口号
2014/06/17 职场文书
教师批评与自我批评
2014/10/15 职场文书
教师工作表现自我评价
2015/03/05 职场文书
车间安全生产管理制度
2015/08/06 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript