Bootstrap按钮悬停变色不生效,主因是自定义CSS选择器权重不足;需用更具体选择器如.btn.btn-primary:hover或检查开发者工具确认样式是否被覆盖。
Bootstrap的 .btn 类自带 :hover 样式,但你写的自定义 :hover 规则很可能被忽略——不是语法错,是选择器权重不够。比如只写 .btn:hover { color: red; },在 Bootstrap 5 中大概率无效,因为它的原生规则是 .btn-primary:hover 这类更具体的选择器。
:hover 样式是否被划掉(即被更高优先级规则覆盖).btn.btn-primary:hover 或加 !important(仅调试时用,上线前应避免).btn-outline-* 在聚焦/悬停时颜色变化很弱),需显式重写.dropdown 加 :hover
Bootstrap 的 .dropdown 依赖 JavaScript 控制显示逻辑,单纯加 :hover .dropdown-menu { display: block; } 会和 JS 冲突:鼠标移开菜单立刻消失,或点击失效。这不是 CSS 能绕过的限制。
:hover 控制 .dropdown-menu 的 display 或 opacity
data-bs-toggle="dropdown",用纯 CSS 实现(仅适用于简单导航栏)transform 和 box-shadow 同时过渡常见写法 .card:hover { transform: translateY(-4px); box-shadow: 0 8px 16px rgba(0,0,0,0.1); transition: all .3s; 看似合理,但 box-shadow 是高成本属性,尤其在低配设备上易掉帧。
transform 和 opacity 做过渡:它们能触发硬件加速,box-shadow 不行transition: transform .3s, opacity .3s;,阴影用 will-change: transform; 提前提示渲染引擎.card 默认没有 overflow: hidden,悬停抬升时若内容溢出,边缘会“破图”,记得补上.form-check-input)悬停样式无效?伪元素没选对Bootstrap 把复选框、单选按钮的视觉样式完全抽离到 ::before / ::after 伪元素上,直接写 .form-check-input:hover { background: blue; } 没用——原生 <input> 本身不可见。
立即学习“前端免费学习笔记(深入)”;
.form-check-input:checked + .form-check-label::before 是勾选态,悬停要写 .form-check:hover .form-check-label::before
position: absolute 绘制伪元素,确保父容器 .form-check 有 position: relative
!important 强行覆盖 background-image(如 SVG 图标),会导致悬停时图标闪烁或不更新真正麻烦的从来不是写 :hover,而是判断该交由 CSS 控制,还是必须让 JS 接管。比如模态框(Modal)或轮播(Carousel)的悬停行为,硬塞 CSS 很容易破坏可访问性(键盘用户无法触发)。留个心眼:先看官方文档是否明确支持 hover 交互,再动手。