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 相关文章推荐
Google AJAX 搜索 API实现代码
Nov 17 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
Jun 17 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
jQuery Validation PlugIn的使用方法详解
Dec 18 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
ionic 上拉菜单(ActionSheet)实例代码
Jun 06 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
SeaJS中use函数用法实例分析
Oct 10 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
Vue内部渲染视图的方法
Sep 02 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 项目的方法
2007/01/02 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python编写生成验证码的脚本的教程
2015/05/04 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python3 线性回归验证方法
2019/07/09 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
四年级数学教学反思
2014/02/02 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
一句话工作感言
2014/03/01 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
Go语言安装并操作redis的go-redis库
2022/04/14 Golang