该“:not()”伪类用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为反选伪类(negation pseudo-class)。
描述
使用 :not() 时,有几种不寻常的效果和结果需要注意:
可以使用此伪类编写无用的选择器。例如,:not(*) 匹配任何不是元素的元素,这显然是荒谬的,所以这个附加的规则将永远不被应用。
可以利用这个伪类提高规则的优先级。例如,#foo:not(#bar) 和 #foo 都将匹配相同的元素,但是具有两个 id 的选择器具有更高的优先级。
:not() 伪类的优先级将由其逗号分割的参数中优先级最高的选择器指定;提供与 :not(:is(argument)) 相同的优先级。
:not(.foo) 将匹配任何非 .foo 的元素,包括 <html> 和 <body>。
这个选择器将匹配任意“不是一个 X”的元素。当与后代选择器一起使用,这可能令人惊讶,因为有多种路径
可以选择一个目标元素。例如,body :not(table) a 仍将应用 <table> 中的链接,因为 <tr>、<tbody>、<th>、<td> (en-US)、<caption> 等都可以匹配选择器 :not(table) 部分。
你可以同时否定多个选择器。例如::not(.foo, .bar) 等同于 :not(.foo):not(.bar)。
如果传递给 :not() 伪类的选择器无效或者浏览器不支持,则整个规则都将是无效的。克服这种行为的有效方式是使用::is 伪类,它接受一个可容错选择器列表。例如 :not(.foo, :invalid-pseudo-class) 将使整个规则无效,但是 :not(:is(.foo, :invalid-pseudo-class)) 将匹配任何(包括 <html> 和 <body>)不是 .foo 的元素。
博主附言
在joe的主题里看到这个伪类,之前没有接触所以做了个文本的笔记,清理桌面的时候点开看了一下内容,顺手删除后想起来要做个笔记,于是就放在博文里了。
.single a:not([class]){
color:#e91e63;
}
有足够的id和class的时候直接给元素一个专有的名称就可以了,对于typecho这种文章内容部分利用markdown,添加id与class比较困难的,利用这个区分一下原生与含类名的同类元素,多加几个样式还是挺好用的。