jQuery手风琴风格收缩展开导航菜单

快乐打工仔 分类:实例代码

jQuery手风琴风格收缩展开导航菜单属于前端实例代码,有关更多实例代码大家可以查看

本章节分享一段代码实例,它实现了手风琴效果,可以伸缩的下拉导航菜单。

掌握菜单的实现原理才是最重要的,下面就详细分析一下它的实现过程。

代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.pipipi.net/" />
<title>犀牛前端部落</title>
<style>
/*globle*/
ul, li{
margin: 0;
padding: 0;
list-style-type: none;
}
a{
display: inline-block;
width: 100%;
height: 31px;
text-decoration: none;
color: #fff;
font-size: 13px;
}
a:hover{
background: #52718A;
}
/*sidebar*/
.sidebar{
width: 210px;
height: 335px;
margin: 50px auto;
border-radius: 5px;
font: 14px '新宋体';
color: #f4f4f4;
}
.title{
width: 95%;
line-height: 32px;
border-bottom: 1px solid #ccc;
background: #1ABC9C;
cursor: pointer;
}
.title > span{
margin-left: 10px;
}
/*in-sidebar*/
.in-sidebar{
width: 100%;
display: none;
}
.in-sidebar > li{
width: 100%;
height: 32px;
background: #34495E;
line-height: 32px;
text-align: center;
border-bottom: 1px solid #ddd;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(function(){
var tmp = null,
$title = $('.title'),
$con = $('.title > ul');
$title.click(function(){
$(tmp).children('ul').slideUp();
$(this).children('ul').slideToggle();
tmp = this;
});
$con.click(function(){
return false;  // 阻止事件冒泡
});
});
</script>
</head>
<body>  
<div class="sidebar">     
<ul>
<li class="title">
<span>一、HTML5基础教程</span>
<ul class="in-sidebar">
<li><a target="_blank" href="http://www.pipipi.net">HTML5基础教程1</a></li>
<li><a href="#">HTML5基础教程2</a></li>
<li><a href="#">HTML5基础教程3</a></li>
<li><a href="#">HTML5基础教程4</a></li>
<li><a href="#">HTML5基础教程5</a></li>
</ul>
</li>
<li class="title"><span>二、CSS3基础教程</span>    
<ul class="in-sidebar">
<li><a href="#">CSS3基础教程1</a></li>
<li><a href="#">CSS3基础教程2</a></li>
<li><a href="#">CSS3基础教程3</a></li>
<li><a href="#">CSS3基础教程4</a></li>
<li><a href="#">CSS3基础教程5</a></li>
</ul>
</li>
<li class="title">
<span>三、Javascript基础教程</span>       
<ul class="in-sidebar">
<li><a href="#">Javascript基础教程1</a></li>
<li><a href="#">Javascript基础教程2</a></li>
<li><a href="#">Javascript基础教程3</a></li>
<li><a href="#">Javascript基础教程4</a></li>
<li><a href="#">Javascript基础教程5</a></li>
</ul>
</li>
<li class="title"><span>四、NodeJs基础教程</span>
<ul class="in-sidebar">
<li><a href="#">NodeJs基础教程1</a></li>
<li><a href="#">NodeJs基础教程2</a></li>
<li><a href="#">NodeJs基础教程3</a></li>
<li><a href="#">NodeJs基础教程4</a></li>
<li><a href="#">NodeJs基础教程5</a></li>
</ul>
</li>
<li class="title"><span>五、IOS基础教程</span>
<ul class="in-sidebar">
<li><a href="#">IOS基础教程1</a></li>
<li><a href="#">IOS基础教程2</a></li>
<li><a href="#">IOS基础教程3</a></li>
<li><a href="#">IOS基础教程4</a></li>
<li><a href="#">IOS基础教程5</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>

上面的代码实现了手风琴下拉菜单效果,下面详细介绍一下它的实现过程。

一.代码注释:

(1).$(function(){}),当文档结构完全加载完毕再去执行函数中的代码。

(2).var tmp = null,声明一个变量并赋初值为null,它用来存储当前点击的标题元素(class属性值为title)的this索引。

(3).$title = $('.title'),获取class属性值为title的元素,也可以叫做标题元素,其实就是每一个菜单的父元素。

(4).$con = $('.title > ul'),获取下面的ul元素。

(5).$title.click(function(){

  $(tmp).children('ul').slideUp();

  $(this).children('ul').slideToggle();

  tmp = this;

}),为标题元素注册click事件处理函数。

$(tmp).children('ul').slideUp(),会把上一个点击展开的菜单隐藏。

$(this).children('ul').slideToggle(),如果菜单展开则隐藏,如果隐藏则展开。

tmp = this,将当前的this对象引用赋值给tmp。

(6).$con.click(function(){

  return false;  // 阻止事件冒泡

}),阻止时间冒泡,否则点击链接也会产生菜单展开和隐藏效果。

二.相关阅读:

(1).children方法参阅jQuery children()一章节。

(2).slideUp方法参阅jQuery slideUp()一章节。

(3).slideToggle方法参阅jQuery slideToggle()一章节。

(4).return false参阅javascript return false一章节。

jQuery手风琴风格收缩展开导航菜单,这样的场景在实际项目中还是用的比较多的,关于jQuery手风琴风格收缩展开导航菜单就介绍到这了。

回复

我来回复
  • 暂无回复内容