jQuery垂直手风琴多级下拉菜单代码http://www.lanrenzhijia.com/nav/4584.html

http://www.lanrenzhijia.com/nav/4584.html点击打开链接

html代码:

<!DOCTYPE html>
<html>

<head>

  <meta charset="UTF-8">

  <title>多级菜单</title>

  <meta name="viewport" content="width=device-width, initial-scale=1">
   <!-- Iconos -->
   <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">

    <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />

</head>

<body>
<div style="text-align:center;clear:both">
<!--<script src="/gg_bd_ad_720x90.js" type="text/javascript"></script>-->
<!--<script src="/follow.js" type="text/javascript"></script>-->
</div>
   <!-- Contenedor -->
   <ul id="accordion" class="accordion">
      <li>
         <div class="link"><!--<i class="fa fa-paint-brush"></i>-->Diseño web<i class="fa fa-chevron-down"></i></div>
         <ul class="submenu">
            <li>
               <div href="#" class="link">Photoshop<i class="fa fa-chevron-down"></i></div>
               <ul class="submenu">
                  <li>
                     <div class="link">测试1<i class="fa fa-chevron-down"></i></div>
                     <ul class="submenu">
                        <li><a href="#">测试123</a></li>
                        <li><a href="#">测试234</a></li>
                        <li><a href="#">测试345</a></li>
                     </ul>
                  </li>
                  <li><a href="#">测试2</a></li>
                  <li><a href="#">测试3</a></li>
               </ul>
            </li>
            <li><a href="#">HTML</a></li>
            <li><a href="#">CSS</a></li>
            <li><a href="#">Maquetacion web</a></li>
         </ul>
      </li>
      <li>
         <div class="link"><!--<i class="fa fa-code"></i>-->Desarrollo front-end<i class="fa fa-chevron-down"></i></div>
         <ul class="submenu">
            <li><a href="#">Javascript</a></li>
            <li><a href="#">jQuery</a></li>
            <li><a href="#">Frameworks javascript</a></li>
         </ul>
      </li>
      <li>
         <div class="link"><!--<i class="fa fa-mobile"></i>-->Diseño responsive<i class="fa fa-chevron-down"></i></div>
         <ul class="submenu">
            <li><a href="#">Tablets</a></li>
            <li><a href="#">Dispositivos mobiles</a></li>
            <li><a href="#">Medios de escritorio</a></li>
            <li><a href="#">Otros dispositivos</a></li>
         </ul>
      </li>
      <li><div class="link"><!--<i class="fa fa-globe"></i>-->Posicionamiento web<i class="fa fa-chevron-down"></i></div>
         <ul class="submenu">
            <li><a href="#">Google</a></li>
            <li><a href="#">Bing</a></li>
            <li><a href="#">Yahoo</a></li>
            <li><a href="#">Otros buscadores</a></li>
         </ul>
      </li>
   </ul>

  <script src='../js/jquery.min.js'></script>

  <script src="js/index.js"></script>

</body>

</html>
 

css代码:

 
* {
   margin: 0;
   padding: 0;
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
}

body {
   background: #2d2c41;
   font-family: 'Open Sans', Arial, Helvetica, Sans-serif, Verdana, Tahoma;
}

ul {
   list-style-type: none;
}

a {
   color: #b63b4d;
   text-decoration: none;
}

/** =======================
 * Contenedor Principal
 ===========================*/
h1 {
   color: #FFF;
   font-size: 24px;
   font-weight: 400;
   text-align: center;
   margin-top: 80px;
 }

h1 a {
   color: #c12c42;
   font-size: 16px;
 }

 .accordion {
   width: 100%;
   max-width: 360px;
   margin: 30px auto 20px;
   background: #FFF;
   -webkit-border-radius: 4px;
   -moz-border-radius: 4px;
   border-radius: 4px;
 }

.accordion .link {
   cursor: pointer;
   display: block;
   padding: 15px 15px 15px 42px;
   color: #4D4D4D;
   font-size: 14px;
   font-weight: 700;
   border-bottom: 1px solid #CCC;
   position: relative;
   -webkit-transition: all 0.4s ease;
   -o-transition: all 0.4s ease;
   transition: all 0.4s ease;
}

.accordion li:last-child .link {
   border-bottom: 0;
}

.accordion li i {
   position: absolute;
   top: 16px;
   left: 12px;
   font-size: 18px;
   color: #595959;
   -webkit-transition: all 0.4s ease;
   -o-transition: all 0.4s ease;
   transition: all 0.4s ease;
}

.accordion li i.fa-chevron-down {
   right: 12px;
   left: auto;
   font-size: 16px;
}

.accordion li.open>.link {
   /*color: #b63b4d;*/
   color:#595959;
}

.accordion li.open i {
   /*color: #b63b4d;*/
   color:#595959;
}
.accordion li.open>.link>i.fa-chevron-down {
   -webkit-transform: rotate(180deg);
   -ms-transform: rotate(180deg);
   -o-transform: rotate(180deg);
   transform: rotate(180deg);
}

/**
 * Submenu
 -----------------------------*/
 .submenu {
   display: none;
   background: #444359;
   font-size: 14px;
 }

 .submenu li {
   border-bottom: 1px solid #4b4a5e;
    background-color: #fff;
 }

 .submenu a {
   display: block;
   text-decoration: none;
   color: #595959;
   padding: 12px;
   padding-left: 42px;
   -webkit-transition: all 0.25s ease;
   -o-transition: all 0.25s ease;
   transition: all 0.25s ease;
 }

 .submenu a:hover {
   /*background: #b63b4d;*/
   color: #595959;
 }
 .accordion li ul li .link,.accordion li ul li a{
    padding-left:58px;
 }
.accordion li ul li ul li .link,.accordion li ul li ul li a{
   padding-left:68px;
}
.accordion li ul li ul li ul li a{
    padding-left:78px;
}

js代码:

 
$(function() {
   var Accordion = function(el, multiple) {
      this.el = el || {};
        this.multiple = multiple || true;
      // Variables privadas
      var links = this.el.find('.link');
      // Evento
      links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown)
   };

   Accordion.prototype.dropdown = function(e) {
      var $el = e.data.el,
         $this = $(this),
         $next = $this.next();

      $next.slideToggle();
      $this.parent().toggleClass('open');

      if (!e.data.multiple) {
         $el.find('.submenu').not($next).slideUp().parent().removeClass('open');
      };
   };

   var accordion = new Accordion($('#accordion'), false);
});

解释:

  1. multiple的作用是用来控制是否能展开多个列表(这里传入false,每次就只能展开一个,展开另外一个就收起前面展开的)

  2. {el: this.el, multiple: this.multiple}这个就是传入到函数里面的数据data

  3. 所以在这里e.data就相当于{el: this.el, multiple: this.multiple}那么e.data.el就是取得其中的值了this.el。

  4. 然后就是$el.find('.submenu')这个选择器取到了id为accordion元素下面的所有class为submenu的ul,但是这里只要展开当前你点击的li下面的ul。而不需要其他的展开。所以用到了.not($next).就是非当前点击中的其他li下面的ul都隐藏。第一个问题的参数multiple就是用来判断执不执行这句代码

    if (!e.data.multiple) {

           $el.find('.submenu').not($next).slideUp().parent().removeClass('open');

    };

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值