应使用 :disabled 伪类控制禁用元素样式,它自动匹配 disabled 属性状态,语义化强、易维护,支持 button、input、select、textarea 等原生元素,但对自定义组件无效;需组合 opacity、cursor、outline 等属性增强可感知性,并注意层叠优先级与兼容性。
禁用按钮时,用 :disabled 选择器可以精准控制样式,避免影响正常状态的按钮外观。
按钮是否禁用由 disabled 属性决定(如 ),CSS 的 :disabled 伪类会自动匹配该状态,无需额外加 class。这样更语义化,也便于维护。
button:disabled { opacity: 0.5; cursor: not-allowed; }
class="disabled" 再写 .disabled 样式(易遗漏、冗余、违反 HTML 语义)不仅限于 ,还支持 (text、number、checkbox 等)、、 等。
input:disabled, select:disabled, button:disabled { background-color: #f5f5f5; color: #999; }
:disabled 对自定义组件(如用 div 模拟的按钮)无效,需配合 aria-disabled 和额外类名处理仅改颜色或透明度不够直观,应组合多个属性增强可感知性:
opacity: 0.6)not-allowed,提示不可点击outline: none,但需确保无障碍替代方案)text-decoration: line-through 小字提
示):disabled 是伪类,权重与类选择器相同(0,1,0),若和类名冲突,按 CSS 层叠规则生效。
button.disabled { ... } 又写了 button:disabled { ... },后者可能被前者覆盖——检查开发者工具中的“已计算”样式:disabled