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 写类方式之二
Jul 05 Javascript
js 键盘记录实现(兼容FireFox和IE)
Feb 07 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
jQuery中dequeue()方法用法实例
Dec 29 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
JavaScript的String字符串对象常用操作总结
May 26 Javascript
js获取Get值的方法
Sep 29 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
jQuery实现全选按钮
Jan 01 jQuery
学习使用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
重置版战役片段
2020/04/09 魔兽争霸
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python中的并发编程实例
2014/07/07 Python
python异常和文件处理机制详解
2016/07/19 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python与mysql数据库交互的实现
2020/01/06 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
11月红领巾广播稿
2014/01/17 职场文书
电子商务专业求职信
2014/03/08 职场文书
五一劳动节活动记录
2014/03/23 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
入党介绍人评语
2014/05/06 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
婚宴致辞
2015/07/28 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
SQL SERVER存储过程用法详解
2022/02/24 SQL Server