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中if语句的几种优化代码写法
Mar 12 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
js弹出窗口返回值的简单实例
May 28 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
学习使用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 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
bootstrap table小案例
2016/10/21 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
python中的sort方法使用详解
2014/07/25 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Django框架封装外部函数示例
2019/05/28 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
毕业自我评价
2014/02/05 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
《分数的意义》教学反思
2016/02/20 职场文书