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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
Dec 22 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
Apr 24 Javascript
解析瀑布流布局:JS+绝对定位的实现
May 08 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
详细探究ES6之Proxy代理
Jul 22 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
vue element 生成无线级左侧菜单的实现代码
Aug 21 Javascript
vue中input的v-model清空操作
Sep 06 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连接mssql数据库的几种方法
2013/02/21 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Python的另外几种语言实现
2015/01/29 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
django2笔记之路由path语法的实现
2019/07/17 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
暑期教师培训方案
2014/06/07 职场文书
职业规划实施方案
2014/06/10 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书