css二级菜单制作
使用纯CSS制作二级菜单
通过嵌套的HTML结构和CSS样式实现二级菜单的显示与隐藏效果。HTML部分采用无序列表嵌套,CSS利用:hover伪类控制二级菜单的显隐。
<ul class="menu">
<li>首页</li>
<li>产品
<ul class="submenu">
<li>产品A</li>
<li>产品B</li>
</ul>
</li>
<li>服务</li>
</ul>
.menu {
position: relative;
list-style: none;
padding: 0;
margin: 0;
background: #333;
}
.menu li {
display: inline-block;
padding: 10px 20px;
color: white;
cursor: pointer;
}
.submenu {
display: none;
position: absolute;
background: #444;
padding: 0;
margin: 0;
}
.menu li:hover .submenu {
display: block;
}
.submenu li {
display: block;
}
添加过渡动画效果
为二级菜单的显示隐藏添加平滑的过渡效果,通过opacity和transform属性实现渐变和位移动画。
.submenu {
opacity: 0;
transform: translateY(-10px);
transition: opacity 0.3s, transform 0.3s;
pointer-events: none;
}
.menu li:hover .submenu {
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
响应式设计适配
使用媒体查询实现移动端适配,将水平菜单改为垂直布局,优化小屏幕下的用户体验。
@media (max-width: 768px) {
.menu li {
display: block;
}
.submenu {
position: static;
}
}
使用CSS变量统一风格
通过CSS变量统一管理菜单的颜色、间距等样式参数,便于后期维护和主题切换。
:root {
--menu-bg: #333;
--menu-text: white;
--submenu-bg: #444;
--hover-bg: #555;
}
.menu {
background: var(--menu-bg);
}
.menu li {
color: var(--menu-text);
}
.submenu {
background: var(--submenu-bg);
}
.menu li:hover {
background: var(--hover-bg);
}
键盘可访问性优化
增强菜单的键盘导航支持,通过:focus-within伪类确保键盘操作时也能显示二级菜单。

.menu li:focus-within .submenu {
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
每种实现方式都保持代码简洁,可根据实际项目需求选择或组合使用。动画效果和响应式设计可根据具体场景调整参数,CSS变量的使用极大提高了样式的可维护性。





