广告

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

2018-7-14 11:14| 作者: antzone| 查看: 646| 评论: 0|来自: 蚂蚁部落

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

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

代码实例如下:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<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.softwhy.com">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一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部