先通过HTML构建导航结构,再用CSS的:hover伪类控制子菜单显示隐藏。具体实现:使用无序列表组织菜单,.submenu默认隐藏,.has-submenu:hover时显示子菜单,并可添加过渡效果提升体验。注意兼容移动端与可访问性。

用 CSS 制作一个简单的下拉菜单,核心思路是利用 :hover 伪类控制子菜单的显示与隐藏。下面是一个基础但实用的实现方法。
HTML 结构
先构建清晰的导航结构,使用无序列表来组织菜单项:
CSS 样式设置
关键在于隐藏子菜单,并在鼠标悬停时显示它:
.dropdown-menu ul {
list-style: none;
margin: 0;
padding: 0;
background: #f8f8f8;
}
.dropdown-menu > ul > li {
display: inline-block;
position: relative;
}
.dropdown-menu a {
display: block;
padding: 10px 15px;
text-decoration: none;
color: #333;
}
/ 隐藏子菜单 /
.submenu {
display: none;
position: absolute;
top: 100%;
left: 0;
background: #fff;
border: 1px solid #ddd;
min-width: 120px;
}
.submenu li {
display: block;
}
/ 悬停时显示子菜单 /
.has-submenu:hover .submenu {
display: block;
}
/ 可选:添加简单过渡效果 /
.submenu {
opacity: 0;
visibility: hidden;
transition: opacity 0.2s, visibility 0.2s;
}
.has-submenu:hover .submenu {
display: block;
opacity: 1;
visibility: visible;
}
优化与注意事项
为了让下拉菜单更友好,可以注意以下几点:
立即学习“前端免费学习笔记(深入)”;
- 确保子菜单有足够间距,避免误触
- 添加边框或阴影提升视觉层次
- 在移动端考虑点击展开的问题(CSS 单靠 :hover 不够)
- 保持键盘可访问性,必要时结合 JavaScript 增强交互
基本上就这些。纯 CSS 下拉菜单适合静态网站或简单场景,结构清晰、维护方便。










