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 相关文章推荐
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
jquery幻灯片插件bxslider样式改进实例
Oct 15 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
Three.js基础部分学习
Jan 08 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
详解es6新增数组方法简便了哪些操作
May 09 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
验证码按回车不变解决方法
2013/03/29 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
司马光教学反思
2014/02/01 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
项目投资建议书
2014/05/16 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
运动会800米赞词
2015/07/22 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang