jQuery 菜单收缩展开和手风琴菜单

菜单收缩展开

效果图:
在这里插入图片描述
代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>菜单收缩展示</title>
    <style>
        body {
            font:16px "Microsoft YaHei",sans-serif;
        }
        ul {
            list-style: none;
            margin: 0;
            padding: 0;
        }
        a {
            text-decoration: none;
        }
        .nav-list {
            width: 220px;
            border-bottom: 1px solid #ccc;
        }
        .nav-list h3 {
            position: relative;
            margin: 0;
            padding: 10px 20px;
            color: #fff;
            background-color: #333;
            border-top: 1px solid #ccc;
            cursor:pointer;
        }
        .nav-list h3:hover {
            background-color: #222;
        }
        .nav-list h3 span {
            position: absolute;
            right: 20px;
            width: 12px;
            height: 12px;
            top: 50%;
            margin-top: -2px;
            border-right: 2px solid #fff;
            border-bottom: 2px solid #fff;
            -webkit-transform: rotate(225deg);
            content: '';
        }
        .nav-list h3.open span {
            top: 50%;
            margin-top: -10px;
            border-right: 2px solid #fff;
            border-bottom: 2px solid #fff;
            transform: rotate(45deg);
            -webkit-transform: rotate(45deg);
            content: '';
        }
        .nav-list ul {
            display: none;
        }
        .nav-list li a {
            display: block;
            padding: 10px 20px;
            background-color: #f5f5f5;
            border: 1px solid #ccc;
            border-bottom: none;
            color: #333;
            font-size: 14px;
        }
        .nav-list li a:hover {
            background-color: #ccc;
        }
    </style>
</head>
<body>
<div class="nav-list">
    <h3>选择器 <span></span></h3>
    <ul>
        <li><a href="#">基本选择器</a></li>
        <li><a href="#">层级选择器</a></li>
        <li><a href="#">过滤选择器</a></li>
        <li><a href="#">属性选择器</a></li>
        <li><a href="#">内容选择器</a></li>
        <li><a href="#">子元素选择器</a></li>
        <li><a href="#">可见性选择器</a></li>
        <li><a href="#">表单选择器</a></li>
        <li><a href="#">表单对象选择器</a></li>
    </ul>
    <h3>筛选 <span></span></h3>
    <ul>
        <li><a href="#">过滤</a></li>
        <li><a href="#">查找</a></li>
        <li><a href="#">关联</a></li>
        <li><a href="#">DOM操作</a></li>
    </ul>
    <h3>样式 <span></span></h3>
    <ul>
        <li><a href="#">CSS操作</a></li>
        <li><a href="#">位置</a></li>
        <li><a href="#">尺寸</a></li>
    </ul>
    <h3>属性 <span></span></h3>
    <ul>
        <li><a href="#">属性操作</a></li>
        <li><a href="#">CSS类</a></li>
        <li><a href="#">代码</a></li>
        <li><a href="#">文本</a></li>
        <li><a href="#"></a></li>
    </ul>
</div>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
    $(document).ready(function () {
        // 给 h3 元素 绑定单击事件
        $(".nav-list h3").click(function () {
            // 显示隐藏ul
            // $(this).next("ul").slideToggle();
            // 上下等价
            // if($(this).next("ul").is(":visible")) {
            //     $(this).next("ul").slideUp();// 隐藏
            // } else {
            //     $(this).next("ul").slideDown();// 显示
            // }

            // 添加删除open属性
            // $(this).toggleClass("open");
            // 上下等价
            // if ($(this).hasClass("open")) {
            //     $(this).removeClass("open");
            // } else {
            //     $(this).addClass("open");
            // }

            // 终极版
            $(this).toggleClass("open").next("ul").slideToggle();
        })
    });
</script>

</body>
</html>

在此基础上实现手风琴菜单

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>手风琴菜单</title>
    <style>
        body {
            font:16px "Microsoft YaHei",sans-serif;
        }
        ul {
            list-style: none;
            margin: 0;
            padding: 0;
        }
        a {
            text-decoration: none;
        }
        .nav-list {
            width: 220px;
            border-bottom: 1px solid #ccc;
        }
        .nav-list h3 {
            position: relative;
            margin: 0;
            padding: 10px 20px;
            color: #fff;
            background-color: #333;
            border-top: 1px solid #ccc;
            cursor:pointer;
        }
        .nav-list h3:hover {
            background-color: #222;
        }
        .nav-list h3 span {
            position: absolute;
            right: 20px;
            width: 12px;
            height: 12px;
            top: 50%;
            margin-top: -2px;
            border-right: 2px solid #fff;
            border-bottom: 2px solid #fff;
            -webkit-transform: rotate(225deg);
            content: '';
        }
        .nav-list h3.open span {
            top: 50%;
            margin-top: -10px;
            border-right: 2px solid #fff;
            border-bottom: 2px solid #fff;
            transform: rotate(45deg);
            -webkit-transform: rotate(45deg);
            content: '';
        }
        .nav-list ul {
            display: none;
        }
        .nav-list li a {
            display: block;
            padding: 10px 20px;
            background-color: #f5f5f5;
            border: 1px solid #ccc;
            border-bottom: none;
            color: #333;
            font-size: 14px;
        }
        .nav-list li a:hover {
            background-color: #ccc;
        }
    </style>
</head>
<body>
<div class="nav-list">
    <h3>选择器 <span></span></h3>
    <ul>
        <li><a href="#">基本选择器</a></li>
        <li><a href="#">层级选择器</a></li>
        <li><a href="#">过滤选择器</a></li>
        <li><a href="#">属性选择器</a></li>
        <li><a href="#">内容选择器</a></li>
        <li><a href="#">子元素选择器</a></li>
        <li><a href="#">可见性选择器</a></li>
        <li><a href="#">表单选择器</a></li>
        <li><a href="#">表单对象选择器</a></li>
    </ul>
    <h3>筛选 <span></span></h3>
    <ul>
        <li><a href="#">过滤</a></li>
        <li><a href="#">查找</a></li>
        <li><a href="#">关联</a></li>
        <li><a href="#">DOM操作</a></li>
    </ul>
    <h3>样式 <span></span></h3>
    <ul>
        <li><a href="#">CSS操作</a></li>
        <li><a href="#">位置</a></li>
        <li><a href="#">尺寸</a></li>
    </ul>
    <h3>属性 <span></span></h3>
    <ul>
        <li><a href="#">属性操作</a></li>
        <li><a href="#">CSS类</a></li>
        <li><a href="#">代码</a></li>
        <li><a href="#">文本</a></li>
        <li><a href="#"></a></li>
    </ul>
</div>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
    $(document).ready(function () {
        // 第一行默认展示
        // $(".nav-list h3").first().addClass("open").next("ul").show();

        // 给 h3 元素 绑定单击事件
        $(".nav-list h3").click(function () {
            $(this)// 当前点击的H3
            .toggleClass("open")// 当前H3切换open类
            .siblings("h3")
            .removeClass("open")// 其他H3删除open类
            .end()// 返回 $(this)
            .next("ul")
            .slideToggle()// 当前H3 后面的ul切换
            .siblings("ul").
            slideUp();// 其他ul隐藏
        })
    });
</script>

</body>
</html>

发布了56 篇原创文章 · 获赞 20 · 访问量 7382

猜你喜欢

转载自blog.csdn.net/qq_36826618/article/details/103994399