实战响应式导航
把媒体查询用于实战,做一个「宽屏横排菜单、窄屏汉堡菜单」的响应式导航,不写 JS:
- 窄屏(基础样式):logo + 汉堡按钮一行;菜单列表默认收起,靠「隐藏的 checkbox 被选中」展开——
#menu-toggle:checked ~ .links把菜单变为显示。 - 宽屏(min-width: 768px):隐藏汉堡按钮,菜单强制横排,checkbox 的展开逻辑不再起作用。
- 汉堡图标用三条 border 或三个 span 绘制,纯 CSS 实现。
这个案例综合了前面多个知识点:移动优先的写法顺序、UI 状态伪类做纯 CSS 交互、flex 控制横竖排布。它是真实项目响应式导航的简化原型,替换图标和动画后即可上线。
本节要点窄屏收起菜单靠「隐藏 checkbox + :checked 兄弟选择器」展开;宽屏媒体查询里隐藏按钮并强制横排;这是移动优先 + 纯 CSS 交互的综合应用。
CSS
<style> .nav { background: #1f2937; color: #fff; padding: 10px 16px; display: flex; justify-content: space-between; align-items: center; } .burger { display: inline-block; cursor: pointer; } .links { display: none; } /* 窄屏默认收起 */ #mt { display: none; } /* 隐藏checkbox */ #mt:checked ~ .links { /* 选中即展开 */ display: flex; flex-direction: column; gap: 8px; padding: 8px 0; } .links a { color: #cbd5e1; text-decoration: none; } @media (min-width: 768px) { /* 宽屏改横排 */ .burger { display: none; } .links { display: flex !important; gap: 20px; } } </style> <nav class="nav"> <span>前端Wiki</span> <label class="burger" for="mt">☰</label> <input type="checkbox" id="mt"> <div class="links"> <a href="#">首页</a><a href="#">教程</a><a href="#">关于</a> </div> </nav>
📚 推荐阅读
来自万象云档的免费在线书籍,点击封面直接阅读




