:not()伪类只能接受单个简单选择器,多条件需并列多个:not();常用写法如:not(button):not(input[type="button"]),不可写复合选择器或逗号分隔。

直接用 :not() 伪类配合按钮选择器即可反选非按钮元素,但要注意它只作用于单个简单选择器,不能写复杂组合。
基础写法:排除所有 button 和带 type="button" 的 input
最常用的是同时排除原生 和 :
body :not(button):not(input[type="button"]) { ... }更严谨:加上 role="button" 和自定义按钮类
现代项目常有语义化按钮(如 下面这些写法是无效的: 立即学习“前端免费学习笔记(深入)”; 正确做法是拆成多个 比起全量反选,更推荐先限定上下文,再剔除按钮: 基本上就这些。核心是理解 .btn 类的元素,可一并排除:
:not(button):not([role="button"]):not(.btn):not() 连用是“且”关系,不是“或”btn 字样的类,可用属性通配::not([class*="btn"])(慎用,可能误伤)关键限制::not() 不支持复合选择器
:not(button, input[type="button"]):not(div > button):not(.btn-primary, .btn-secondary):not() 并列,或用 JS 配合 class 控制范围。实用建议:优先缩小主体范围再反选
form :not(button):not(input[type="submit"]):not(input[type="reset"]) { ... }
.content),只对它内部做反选,避免全局污染:not() 的原子性——它只接受一个简单选择器,多条件靠叠加,别贪图一步到位。










