如何用css制作简单下拉菜单

先通过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 下拉菜单适合静态网站或简单场景,结构清晰、维护方便。