答案::not选择器用于排除特定元素以灵活应用样式。可排除类、ID、属性或状态,如button:not(.cancel)选中非取消按钮,input:not([disabled])选中未禁用输入框,注意不可嵌套且括号内一般只支持单个选择器,避免复杂组合以保证性能和可读性。

在CSS中,:not 选择器是一个非常实用的伪类,它允许你选中不符合指定条件的元素。通过使用 :not(),你可以轻松排除某个特定元素或具有特定特征的元素,从而更灵活地应用样式。
基本语法
:not(选择器) 会匹配所有不满足括号内选择器的元素。括号中可以是标签名、类名、ID、属性选择器,甚至是其他伪类。
例如:p:not(.special)
—— 选中所有不是 .special 类的段落input:not([disabled])
—— 选中所有未被禁用的输入框li:not(:last-child)
—— 选中除了最后一个之外的所有列表项
排除特定类或ID
如果你希望对某类元素统一设置样式,但想跳过某个特殊元素,可以使用 :not 排除该类或ID。
示例:
/* 给所有按钮添加蓝色背景,但排除 class 为 "cancel" 的按钮 */
button:not(.cancel) {
background-color: blue;
color: white;
}
/ 所有 div 都加边框,除了 id 为 "sidebar" 的 /
div:not(#sidebar) {
border: 1px solid #ccc;
}
结合属性和状态排除
:not 还能用于排除具有特定状态的元素,比如表单控件中的只读或已聚焦状态。
立即学习“前端免费学习笔记(深入)”;
常见用法包括:a:not([href])
—— 匹配没有 href 属性的链接(可能是占位符)input:not(:focus)
—— 非聚焦状态的输入框img:not([alt=""])
—— 图片中含有非空 alt 属性的元素
注意事项
:not 虽然强大,但也有一些限制需要注意:
- 括号内只能写一个选择器(现代浏览器支持多个用逗号分隔的情况仍有限)
- 不能嵌套 :not 选择器,如
:not(:not(...))
是无效的 - 性能上尽量避免过于复杂的选择器组合
- 保持可读性,避免写出难以维护的否定逻辑
基本上就这些。合理使用 :not 可以让CSS更简洁高效,特别是在需要“全局样式 + 局部例外”的场景下特别有用。










