响应式导航栏模板
前端搭建
来源:16idc
一个完整的响应式导航栏组件,包含移动端汉堡菜单、下拉菜单和高亮当前页面功能。
HTML
<nav class="navbar">
<div class="nav-container">
<a href="/" class="nav-logo">
<img src="logo.svg" alt="Logo" height="32">
</a>
<button class="nav-toggle" aria-label="切换菜单">
<span></span>
<span></span>
<span></span>
</button>
<ul class="nav-menu">
<li><a href="/" class="active">首页</a></li>
<li class="dropdown">
<a href="/services">服务 ▾</a>
<ul class="dropdown-menu">
<li><a href="/web-design">网页设计</a></li>
<li><a href="/hosting">主机托管</a></li>
<li><a href="/seo">SEO 优化</a></li>
</ul>
</li>
<li><a href="/about">关于</a></li>
<li><a href="/blog">博客</a></li>
<li><a href="/contact" class="nav-cta">联系我们</a></li>
</ul>
</div>
</nav>
CSS
/* 基础样式 */
.navbar {
background: #fff;
box-shadow: 0 2px 8px rgba(0,0,0,.1);
position: sticky;
top: 0;
z-index: 1000;
}
.nav-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
.nav-menu {
display: flex;
list-style: none;
gap: 8px;
margin: 0;
padding: 0;
}
.nav-menu a {
text-decoration: none;
color: #333;
padding: 8px 16px;
border-radius: 6px;
transition: background .2s;
}
.nav-menu a:hover,
.nav-menu a.active {
background: #f0f0f0;
color: #4F46E5;
}
.nav-cta {
background: #4F46E5;
color: #fff !important;
}
.nav-cta:hover {
background: #4338CA !important;
}
/* 下拉菜单 */
.dropdown { position: relative; }
.dropdown-menu {
display: none;
position: absolute;
top: 100%;
left: 0;
background: #fff;
box-shadow: 0 4px 12px rgba(0,0,0,.1);
border-radius: 8px;
min-width: 180px;
list-style: none;
padding: 8px;
}
.dropdown:hover .dropdown-menu {
display: block;
}
/* 汉堡按钮 */
.nav-toggle {
display: none;
flex-direction: column;
gap: 5px;
background: none;
border: none;
cursor: pointer;
padding: 4px;
}
.nav-toggle span {
display: block;
width: 24px;
height: 2px;
background: #333;
transition: transform .3s;
}
/* 移动端 */
@media (max-width: 768px) {
.nav-toggle { display: flex; }
.nav-menu {
display: none;
position: absolute;
top: 64px;
left: 0;
right: 0;
background: #fff;
flex-direction: column;
padding: 16px;
box-shadow: 0 4px 12px rgba(0,0,0,.1);
}
.nav-menu.active { display: flex; }
.dropdown-menu {
position: static;
box-shadow: none;
padding-left: 16px;
}
}
JavaScript
document.addEventListener('DOMContentLoaded', () => {
const toggle = document.querySelector('.nav-toggle');
const menu = document.querySelector('.nav-menu');
toggle.addEventListener('click', () => {
menu.classList.toggle('active');
toggle.setAttribute('aria-expanded',
toggle.getAttribute('aria-expanded') === 'false' ? 'true' : 'false'
);
});
// 点击菜单外关闭
document.addEventListener('click', (e) => {
if (!e.target.closest('.navbar')) {
menu.classList.remove('active');
}
});
});
功能特性
- ✅ 粘性导航(Sticky Header)
- ✅ 移动端汉堡菜单
- ✅ 下拉菜单(子导航)
- ✅ 当前页面高亮(.active)
- ✅ 点击外部关闭菜单
- ✅ ARIA 无障碍标签
- ✅ CTA 按钮样式