css响应式布局可以通过媒体查询、弹性布局等特性,让导航菜单在不同屏幕尺寸下自动切换展示状态,在桌面端完整显示所有菜单项,在移动端折叠成可点击展开的按钮形式,适配不同设备的浏览需求。

基础导航菜单结构搭建
首先我们需要搭建导航菜单的基础HTML结构,包含logo区域和菜单项列表,整体用nav标签包裹,代码如下:
<nav class="navbar">
<div class="logo">站点名称</div>
<ul class="menu-list">
<li><a href="/">首页</a></li>
<li><a href="/about">关于我们</a></li>
<li><a href="/product">产品中心</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
<div class="menu-toggle">菜单</div>
</nav>
这里新增了menu-toggle类名的元素,用于在移动端作为展开折叠菜单的触发按钮,默认在桌面端隐藏。
桌面端导航菜单样式设置
使用flexbox弹性布局实现桌面端的导航菜单水平排列效果,同时隐藏移动端专属的触发按钮,相关css代码如下:
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 32px;
background-color: #f8f9fa;
}
.logo {
font-size: 20px;
font-weight: bold;
}
.menu-list {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
.menu-list li {
margin-left: 24px;
}
.menu-list li a {
text-decoration: none;
color: #333;
font-size: 16px;
}
.menu-toggle {
display: none;
cursor: pointer;
padding: 8px 12px;
background-color: #e9ecef;
border-radius: 4px;
}
媒体查询实现移动端折叠效果
通过media_query设置屏幕宽度小于768px时的样式规则,将菜单项改为垂直排列并默认隐藏,同时显示触发按钮,代码如下:
@media screen and (max-width: 768px) {
.menu-toggle {
display: block;
}
.menu-list {
display: none;
flex-direction: column;
position: absolute;
top: 60px;
left: 0;
width: 100%;
background-color: #f8f9fa;
padding: 16px 0;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.menu-list li {
margin-left: 0;
text-align: center;
padding: 12px 0;
}
.menu-list.active {
display: flex;
}
}
添加折叠交互逻辑
通过原生JavaScript实现点击触发按钮时切换菜单项的显示状态,代码如下:
const menuToggle = document.querySelector('.menu-toggle');
const menuList = document.querySelector('.menu-list');
menuToggle.addEventListener('click', function() {
menuList.classList.toggle('active');
});
常见问题与优化方案
点击菜单项后自动折叠
在移动端点击菜单项跳转后,菜单不会自动折叠,需要给每个菜单项添加点击事件,点击后移除active类:
const menuItems = document.querySelectorAll('.menu-list li a');
menuItems.forEach(item => {
item.addEventListener('click', function() {
menuList.classList.remove('active');
});
});
避免样式冲突
如果页面中存在其他导航组件,需要给当前导航的类名添加唯一前缀,避免css样式互相覆盖。同时媒体查询的断点可以根据实际设计需求调整,比如将768px改为992px适配平板设备。
适配暗黑模式
可以结合prefers-color-scheme媒体查询,为导航菜单添加暗黑模式适配,提升不同系统设置下的用户体验:
@media (prefers-color-scheme: dark) {
.navbar {
background-color: #212529;
}
.menu-list li a {
color: #f8f9fa;
}
.menu-toggle {
background-color: #343a40;
color: #f8f9fa;
}
}
css响应式布局导航菜单折叠media_queryflexbox修改时间:2026-06-24 20:15:24