:not伪类用于排除特定元素以灵活应用样式,如p:not(.highlight)为非高亮段落设背景,:not(span)选非span行内元素,button:not(:disabled)为可用按钮设指针,a[href]:not([href^=”https://”])为非外链设绿字,注意括号内仅限简单选择器、不可嵌套:not、避免复杂表达式以防性能与兼容问题。

css 的 :not 伪类选择器用于排除符合特定条件的元素,从而更灵活地应用样式。它属于否定伪类,可以让你选中不匹配某个选择器的元素。
基本语法
使用 :not() 时,括号内写入要排除的选择器:
:not(选择器)
括号内的选择器可以是标签名、类名、属性选择器、伪类等,但不能嵌套另一个 :not() 或使用复合选择器(部分浏览器支持有限)。
常见用法示例
1. 排除特定类的元素
给所有不包含 .highlight 类的段落添加背景色:
p:not(.highlight) { background: #eee; }
立即学习“前端免费学习笔记(深入)”;
2. 排除某个标签类型
选中所有不是 span 的行内元素:
:not(span) { color: blue; }
3. 结合类和标签使用
给所有按钮加上样式,但排除禁用状态:
button:not(:disabled) { cursor: pointer; }
4. 使用属性选择器排除
为有 href 属性的链接设置样式,但排除指向外部网站的链接:
a[href]:not([href^=”https://”]) { color: green; }
注意事项
:not 选择器虽然强大,但也有一些限制和需要注意的地方:
- 括号内只能是一个简单选择器,不能写多个用逗号分隔的选择器
- 不能嵌套 :not()(如 :not(:not(…)) 是无效的)
- 在旧版浏览器中可能存在兼容性问题,特别是复杂用法
- 性能上尽量避免过于复杂的 :not 表达式,尤其是在大范围选择时
基本上就这些。合理使用 :not 能让 CSS 更简洁,减少不必要的类名控制。


