直接修改 .dropdown-item:hover 的 font-weight 即可生效,推荐设为 500 或 600,并同步添加 :focus 以保障可访问性;若使用深色菜单需额外覆盖 .dropdown-menu-dark .dropdown-item:hover;注意选择器权重、主题变量及字体加载状态。

直接改 .dropdown-item:hover 的 font-weight 就行
Bootstrap 默认没给 .dropdown-item:hover 单独设字体粗细,所以悬停时文字看起来和常态一样——不是没生效,而是压根没定义。你只需要显式写一条规则,就能立刻变粗(或变细)。注意两点:一是必须带 :hover 伪类,只改常态 .dropdown-item 不会影响悬停效果;二是别漏掉 :focus,否则键盘用户按 Tab 进入时文字还是细的。
- 最简写法:
.dropdown-item:hover { font-weight: 600; } - 要兼顾可访问性,必须同步写:
.dropdown-item:hover, .dropdown-item:focus { font-weight: 600; } - 如果用了
.dropdown-menu-dark,得额外加一句:.dropdown-menu-dark .dropdown-item:hover { font-weight: 500; }(深色模式下常需稍细一点,避免视觉过重) - 别用
bold——它等价于700,在多数字体里太突兀;500或600更稳
为什么加了 font-weight: 600 还是没变粗
常见失效点就三个:选择器权重不够、作用对象错了、被 JS 动态样式锁死。
- 浏览器 DevTools 里看到你的
font-weight被划掉?大概率是父级限定太强,比如.navbar-light .dropdown-menu .dropdown-item:hover这种高权重选择器盖住了你写的.dropdown-item:hover - 你改的是普通下拉菜单,但实际渲染的是
.dropdown-menu-dark .dropdown-item:hover,而你没覆盖深色模式下的规则 - 项目用了 Bootstrap Sass,并自定义了
$dropdown-link-hover-font-weight变量,编译后生成的 CSS 已经把你的样式覆盖了
font-weight 值选多少才不突兀
别硬套 bold 或 normal,要看你用的字体本身是否有足够字重档位。Bootstrap 默认用 system-ui 字族,它在不同系统上表现不一。
- 推荐优先试
500:比常态400稍重,有变化但不跳戏 - 若字体支持
600(如 Inter、Roboto),且菜单项文字少、背景对比强,可用600 - 绝对避免
700+:下拉菜单本就信息密度高,太粗会加重视觉负担,尤其小字号下易糊成一块 - 移动端慎用加粗:iOS Safari 对细字体加粗渲染不稳定,有时会模糊,建议真机验证
真正容易被忽略的是字体加载状态
如果你用了自定义 Web Font(比如 via @import 或 <link>),而 font-weight 改了但没立刻生效,可能不是 CSS 问题,而是字体还没加载完成。浏览器会先用系统字体渲染,等 Web Font 加载完才替换——这时你设的 600 才真正起效。临时解法:在 @font-face 规则里明确声明 font-weight: 500 和 600 对应的文件,别依赖 fallback。











