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 相关文章推荐
php gethostbyname获取域名ip地址函数详解
Jan 24 Javascript
Jquery replace 字符替换实现代码
Dec 02 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
Nov 07 Javascript
详解jQuery中基本的动画方法
Dec 14 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
js中数组常用方法总结(推荐)
Apr 09 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
Javascript模块化机制实现原理详解
Apr 02 Javascript
Vue Element-ui表单校验规则实现
Jul 09 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 CURL获取返回值的方法
2014/05/04 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
smarty简单应用实例
2015/11/03 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
JS跨域问题详解
2014/11/25 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python3实现购物车功能
2018/04/18 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
高二英语教学反思
2014/01/19 职场文书
初三学生评语大全
2014/04/24 职场文书
大学学风建设方案
2014/05/04 职场文书
新闻发布会策划方案
2014/06/12 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
辩论赛新闻稿
2015/07/17 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android