左侧菜单栏折叠展开效果-超级简单

分享一个常见于管理后台的左侧菜单栏折叠展开的效果,基于jquery,效果图如下:



一:页面结构:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div class="menu-list">
    <ul>
        <li class="first-menu">
            <a href="javascript:;">首页</a>
        </li>
        <li class="first-menu">
            <a href="javascript:;">菜单1</a>
            <ul>
                <li class="second-menu">
                    <a href="javascript:;">子菜单1-1</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单1-2</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单1-3</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单1-4</a>
                </li>
            </ul>
        </li>
        <li class="first-menu">
            <a href="javascript:;">菜单2</a>
            <ul>
                <li class="second-menu">
                    <a href="javascript:;">子菜单2-1</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单2-2</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单2-3</a>
                </li>
            </ul>
        </li>
        <li class="first-menu">
            <a href="javascript:;">菜单3</a>
            <ul>
                <li class="second-menu">
                    <a href="javascript:;">子菜单3-1</a>
                </li>
                <li class="second-menu">
                    <a href="javascript:;">子菜单3-2</a>
                </li>
            </ul>
        </li>
    </ul>
</div>
</body>
</html>

二:页面样式css,放在head标签里

<style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            -webkit-box-sizing: border-box;
        }
        html,body{
            height: 100%;
        }
        .menu-list{
            height: 100%;
            padding-top:20px;
            font-size:18px;
            background-color: #2e3254;
        }
        .menu-list ul{
            list-style: none;
            padding:0;
            margin:0 auto;
        }
        .menu-list ul li{
            text-align:left;
            color: #616c82;
        }
        .menu-list ul li.first-menu{
            overflow: hidden;
        }
        .menu-list ul li:HOVER>a{
            color: #007FC8;
        }
        .menu-list ul li a{
            display:block;
            padding:16px 0;
            color: #5f78a2;
            text-decoration:none;
        }
        .menu-list ul li.first-menu>a{
            padding-left: 15px;
        }
        .menu-list ul li.first-menu.active>a{
            color: #1c9dff;
            vertical-align: middle;
        }
        .menu-list ul li.first-menu.active ul li.second-menu.current a{
            background-color: #4d527c;
            font-size: 18px;
        }
        .menu-list ul li.first-menu ul{
            display:none;
        }
        .menu-list ul li.first-menu ul li.second-menu a{
            padding: 12px 0 12px 31px;
            font-size:16px;
            color: #8aa3cd;
        }
    </style>

三:引入jquery文件

<script type="text/javascript" src="//code.jquery.com/jquery-1.8.2.min.js"></script>

四:给一级菜单绑定点击事件,点击时展开下面的子菜单

        $(".menu-list .first-menu").click(function(){
            $(this).addClass("active").siblings().removeClass("active");
            $(this).find("ul").slideToggle(500);
            $(this).siblings().find("ul").hide();
        })

五:给二级菜单绑定事件,点击时加入选中的深色背景

      $(".menu-list .second-menu").click(function(){
            var $this = $(this);
            $(".second-menu").each(function () {
                if($(this).hasClass("current")){
                    $(this).removeClass("current");
                }
            })
            $this.addClass("current").siblings().removeClass("current");
        })

六:阻止二级菜单点击发生冒泡,当点击二级菜单的时候,一级菜单的事件也会发生,此时二级菜单会被收起,因此需要阻止事件冒泡

        //  阻止事件冒泡
        $(".menu-list .first-menu ul").bind("click",function(event){
            event.stopPropagation();
        });

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 5,283评论 0 8
  • 22、JQ的基础语法、核心原理和项目实战 jQ的版本和下载 jQuery版本 1.x:兼容IE6-8,是目前PC端...
    萌妹撒阅读 5,763评论 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,513评论 1 45
  • jQuery模块 选择器、DOM操作、事件、AJAX与动画 匿名函数自执行 作用:解决命名空间与变量污染的问题 总...
    青青玉立阅读 4,468评论 0 0
  • 在抖音上看到这画好看,于是去了堆糖搜了原图,原作者不知道是谁,喜欢就临摹啦~ 新收藏的图要趁新鲜热乎劲,立刻画,不...
    李忠怡_007阅读 3,038评论 0 7

友情链接更多精彩内容