的顶部添加等高 margin-top 或 padding-top,数值等于导航栏高度(如 60px)。
3、为导航容器设置 background-color 和 box-shadow,确保视觉层次清晰且背景不透明。
三、利用 Flexbox 布局实现水平居中与弹性排列
Flexbox 可以轻松控制导航项的对齐方式、间距与换行行为,避免浮动或 inline-block 带来的布局陷阱,提升代码可维护性。
1、对 .main-nav ul 设置 display: flex; list-style: none; margin: 0; padding: 0;
2、对 li 元素设置 flex: 1; text-align: center;,使每个导航项平均分配宽度。
3、对 a 元素设置 display: block; padding: 16px 20px; text-decoration: none; color: #333;,确保点击区域完整且无下划线。
四、通过媒体查询实现响应式断点切换
当视口宽度缩小至移动端阈值时,需将水平导航收起为汉堡菜单,隐藏列表项并触发 JavaScript 控制显隐。媒体查询负责样式层面的条件切换。
1、在 CSS 中添加 @media screen and (max-width: 768px) { ... } 规则块。
2、在该规则内将 .main-nav ul 设置为 flex-direction: column; display: none;,并为 .menu-toggle 按钮设置 display: block;
3、为小屏下的 li 设置 width: 100%; border-bottom: 1px solid #eee;,形成垂直分隔列表样式。
五、添加 JavaScript 控制移动菜单展开/收起
纯 CSS 无法实现点击切换显隐状态,需借助 JavaScript 监听按钮点击事件,动态修改导航列表的 display 属性或切换 active 类名。
1、为汉堡按钮添加 id="menu-toggle",为导航列表添加 id="nav-list"。
2、编写脚本:document.getElementById('menu-toggle').addEventListener('click', function() { ... });
3、在事件处理函数中执行 document.getElementById('nav-list').style.display = document.getElementById('nav-list').style.display === 'flex' ? 'none' : 'flex';