:not()伪类选择器用于排除特定元素应用样式,如p:not(.special)选择非.special类的段落,input:not([disabled])选择未禁用的输入框,.container>div:not(.exclude)为不含.exclude类的子div设黄色背景,还可结合:is()和属性选择器精确控制样式。

在 css 中,:not() 伪类选择器用于选择不符合指定条件的元素,从而排除特定元素应用样式。它非常实用,尤其是在不想影响某些特定标签、类或属性时。
基本语法
:not(<em>selector</em>) 会选中所有不匹配该选择器的元素。括号内可以是标签名、类、ID、属性选择器等。
示例:
-
p:not(.special):选择所有不是.special类的段落 -
input:not([disabled]):选择所有未被禁用的输入框 -
:not(.hidden):选择所有没有.hidden类的元素
排除特定类的元素
如果你想对某个容器内的所有子元素设置样式,但排除带有特定类的元素,可以这样写:
.container > div:not(.exclude) { background: yellow; }
这会为 .container 下的所有 div 添加黄色背景,除了带有 .exclude 类的元素。
立即学习“前端免费学习笔记(深入)”;
排除特定标签
有时你想选中某一类元素,但排除某个标签类型。比如给所有表单元素加边框,但不要给 textarea 加:
input:not(textarea), select:not(textarea) { border: 1px solid #ccc; }
注意:textarea 是 textarea 标签,而 input 不包含它,所以更合理的写法是:
input, select, textarea:not(textarea) { ... }
实际上更简洁的方式是直接不用 :not(),但如果想统一处理并排除某个标签,可以用:
:is(input, select, textarea):not(textarea) { border: 1px solid #ccc; }
结合属性选择器排除
你可以用 :not() 排除具有特定属性的元素:
button:not([type="submit"]) { color: blue; }
这会给所有 button 设置蓝色文字,除了 type="submit" 的按钮。
基本上就这些常见用法。掌握 :not() 能让你的样式更精确,避免冗余覆盖。关键是理解它括号里写的是“要排除的条件”。


