要使下拉项点击样式生效,必须同时覆盖 .dropdown-item:active、:focus 和 :visited 状态,并注意 Bootstrap 版本差异:5.2+ 推荐用 --bs-dropdown-link-active-color 变量,旧版需用 !important 强制覆盖,且 CSS 必须在 Bootstrap 后加载。
.dropdown-item:active 为什么没反应不是样式没写对,而是 Bootstrap 默认用 :focus 覆盖了 :active 的视觉表现。点击后焦点仍保留在项上(尤其键盘操作后),.dropdown-item:focus 的背景和 outline 会“抢走”你设的 :active 颜色。只写 :active 等于白写。
.dropdown-item:active, .dropdown-item:focus
outline,别只写 outline: none,还得补 box-shadow: none——Bootstrap 5 默认用 box-shadow 模拟 focus ringfocus,iOS 则可能延迟触发,颜色不同步就说明没覆盖全:visited 必须一起重置如果 .dropdown-item 是 <a> 标签,浏览器对已访问链接有强默认行为(比如变紫色)。哪怕你写了 .dropdown-item:active { color: #fff; },用户第二次点同一项,颜色也会回退。
.dropdown-item:visited, .dropdown-item.active:visited, .dropdown-item:focus:visited
:visited 的覆盖,等于给用户留了个视觉 bug硬写 color + !important 容易和主题切换、深色模式冲突。Bootstrap 5.2 起支持 --bs-dropdown-link-active-color,改一处,所有相关状态自动响应。
<head> 或全局样式开头加 :root { --bs-dropdown-link-active-color: #fff; }
my-dropdown,再写 .my-dropdown .dropdown-menu { --bs-dropdown-link-active-color: #2c3e50; }
.dropdown-item),原生 <a> 不在此列如果你用的是 Bootstrap 5.0 或 5.1,--bs-dropdown-link-active-color 还没引入,变量方案无效,得靠选择器权重硬刚。
.dropdown-menu .dropdown-item:active, .dropdown-menu .dropdown-item:focus { color: #fff !important; }
!important 是合理手段——Bootstrap 自身大量用它,不加反而容易被压:visited 或 :focus)、变量没生效(版本不对或加载顺序错)、移动端没真机验证。这些地方一漏,颜色就“看起来改了,但用起来不对”。