使用css做出折叠导航栏的功能

实现原理:

利用隐藏的复选框记录点击状态,通过CSS选择器 :checked 和相邻兄弟选择器控制导航菜单的显示/隐藏。

html代码如下:

javascript 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <style>
        /* 隐藏复选框 */
        #nav-toggle { display: none; }

        /* 汉堡菜单样式 */
        .toggle-label {
            display: block;
            cursor: pointer;
            padding: 15px;
            background: #333;
            color: white;
            font-size: 24px;
        }

        /* 导航菜单 - 默认隐藏 */
        .nav-menu {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.5s ease-out;
            background: #f1f1f1;
        }

        /* 当复选框选中时显示菜单 */
        #nav-toggle:checked ~ .nav-menu {
            max-height: 300px; /* 需大于菜单总高度 */
        }
    </style>
</head>
<body>
    <!-- 使用label关联隐藏的checkbox -->
    <label for="nav-toggle" class="toggle-label">☰</label>
    <input type="checkbox" id="nav-toggle">
    
    <!-- 导航菜单 -->
    <nav class="nav-menu">
        <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>
        </ul>
    </nav>
</body>
</html>

页面如下:

相关推荐
仿生狮子38 分钟前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
Lvan的前端笔记4 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习4 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194055 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风6 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn7 小时前
框架性能优化
前端
回眸&啤酒鸭9 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户69371750013849 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员9 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子9 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端