直接用 :disabled 伪类可精准控制原生按钮禁用样式,无需额外 class 或 JS;对自定义按钮需手动加 class 和 aria-disabled。
按钮禁用状态的样式,直接用 :disabled 伪类就能单独控制,不需要额外 class 或 JS 干预。
只要按钮是原生 、 等支持 disabled 属性的元素,CSS 就能通过 :disabled 精准命中:
button:disabled { opacity: 0.5; cursor: not-allowed; background-color: #ccc; }button[disabled] —— 它匹配的是有 disabled 属性的元素,但 :disabled 还能覆盖 JS 动态设为禁用的情况(比如 btn.disabled = true),更可靠禁用样式容易被通用规则(如 button:hover 或全局重置)意外覆盖:
:disabled 规则写在 hover / focus 等交互伪类之后,保证优先级不被压低!important(慎用,仅当第三方 CSS 干扰严重时)pointer-events: none —— 它会让 :hover 失效,但 :disabled 依然生效如果用 基本上就这些。:disabled 是浏览器原生支持的语义化方式,简洁、可靠、无障碍友好。 或封装组件模拟按钮,:disabled 不起作用:
disabled class,例如
.btn-disabled { opacity: 0.5; cursor: not-allowed; }
aria-disabled="true" 保证可访问性