You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用padding等技巧如何实现下拉菜单文本垂直居中

下拉菜单文本垂直居中解决方案

问题原因

vertical-align 属性仅对行内元素、行内块元素、表格单元格元素生效,你代码中<a>标签被设置为display: block块级元素,因此该属性无法生效,导致文本始终靠顶部显示。

修复方案

将导航项的<a>标签设置为Flex布局即可快速实现垂直+水平居中,仅需要修改#navbar li a的样式规则:

#navbar li a {
  display: flex;
  align-items: center; /* 实现垂直居中 */
  justify-content: center; /* 实现水平居中 */
  height: 100px;
  text-decoration: none; /* 可选:去掉默认下划线,更美观 */
  color: #000; /* 可选:自定义文本颜色 */
}

可删除的冗余代码

你当前代码中存在以下无意义或重复的规则,可以直接删除:

  • #navbar ul li:hover:和上层#navbar li:hover的效果完全重复,所有li元素hover时的背景色规则已经统一设置
  • #vnavbar ul:不存在匹配的DOM元素,你的vnavbar本身就是ul节点,没有嵌套子ul
  • #vnavbar:设置的width: 100%已经继承自父级#navbar ul的规则,重复设置无意义
  • 如果你使用了上述Flex修复方案,原#navbar li a中的text-align: center也可以删除,justify-content: center已经实现了水平居中效果

完整修改后CSS代码

#navbar ul {
  display: none;
  position: absolute;
  top: 100%;
}

#navbar li:hover ul {
  display: block;
}

#navbar,
#navbar ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

#navbar {
  height: 100px;
  width: 100%;
}

#navbar li {
  float: left;
  position: relative;
  height: 100%;
  width: 25%;
}

#navbar li a {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100px;
  text-decoration: none;
  color: #000;
}

#navbar ul li {
  float: none;
}

#navbar li:hover {
  background-color: #6da3a3;
}

#vnavbar li {
  width: 100%;
  height: 100px;
}

HTML代码无需修改,运行后即可实现所有导航文本的垂直水平居中效果。

内容的提问来源于stack exchange,提问作者Ingvar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 22:48:04