css制作下拉导航条
使用纯CSS制作下拉导航条
通过CSS的:hover伪类和display属性控制下拉菜单的显示与隐藏。HTML结构需嵌套无序列表,CSS设置定位和过渡效果。
HTML结构示例:
<nav>
<ul>
<li><a href="#">首页</a></li>
<li>
<a href="#">产品</a>
<ul class="dropdown">
<li><a href="#">产品A</a></li>
<li><a href="#">产品B</a></li>
</ul>
</li>
</ul>
</nav>
CSS样式示例:
nav ul {
list-style: none;
padding: 0;
margin: 0;
background: #333;
}
nav > ul > li {
display: inline-block;
position: relative;
}
nav a {
display: block;
padding: 10px 20px;
color: white;
text-decoration: none;
}
.dropdown {
position: absolute;
display: none;
background: #444;
min-width: 160px;
}
nav li:hover .dropdown {
display: block;
}
添加过渡动画效果
通过opacity和transform属性实现平滑显示效果,修改.dropdown样式:
.dropdown {
opacity: 0;
transform: translateY(-10px);
transition: opacity 0.3s, transform 0.3s;
pointer-events: none;
}
nav li:hover .dropdown {
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
响应式设计适配移动端
使用媒体查询调整导航栏布局:
@media (max-width: 768px) {
nav > ul > li {
display: block;
}
.dropdown {
position: static;
opacity: 1;
transform: none;
display: none;
}
}
使用CSS变量维护主题色
定义颜色变量方便统一修改:
:root {
--nav-bg: #333;
--dropdown-bg: #444;
--text-color: white;
}
nav ul {
background: var(--nav-bg);
}
.dropdown {
background: var(--dropdown-bg);
}
nav a {
color: var(--text-color);
}
无障碍优化
为屏幕阅读器添加ARIA属性:
<li aria-haspopup="true" aria-expanded="false">
<a href="#">产品</a>
<ul class="dropdown" aria-label="子菜单">
...
</ul>
</li>
通过JavaScript动态更新aria-expanded属性:
document.querySelectorAll('nav > ul > li').forEach(item => {
item.addEventListener('mouseover', () => {
item.setAttribute('aria-expanded', 'true');
});
item.addEventListener('mouseout', () => {
item.setAttribute('aria-expanded', 'false');
});
});






