有许多伪元素和类:
:: after,:: before,:: first-letter,:: first-line,:: selection,:: backdrop
:active,:checked,:default,:dir(),: disabled,:empty,:enabled,:first,:first-child,:first-of-type,:fullscreen,:focus,:hover, :indeterminate,:in-range,:invalid,:lang(),:last-child,:last-of-type,:left,:link,:not(),:nth-child(),:nth-last -child(),:nth-last-of-type(),:nth-of-type(),: only-child,:only-of-type,:optional,:out-of-range,:read- only,:read-write,:required,:right,:root,:scope,:target,:valid,:visited
还有其他像:: - webkit-input-placeholder,:: - moz-placeholder等等。我不知道它们是什么元素。但我认为它们是伪元素,因为它有双冒号。
有一个星号选择器*
可以选择DOM-Tree内的所有元素。
现在,我很想知道为什么没有单个选择器来选择所有伪元素和DOM-Tree之外的伪类,即使在css3或css4中也是如此?
*pseudo{
color: red;
}
答案 0 :(得分:5)
*
选择任何元素,无论其性质或状态如何。通过这种方式,它已经涵盖了所有伪类,只有零特异性。
例如,*
将匹配任何元素,无论它是:first-child
,:last-child
还是两者(它们本身可以使用:only-child
或{{表示1}})。它还会匹配任何链接,无论是未访问的(:first-child:last-child
)还是访问过的(:link
),以及它是否与:visited
/ :hover
/ {中的一个或多个匹配{1}}。
如果你正在寻找一种方法来覆盖任何和所有CSS规则与给定元素的伪类(这在动态伪类的情况下很有用,例如链接的那个),唯一的方法是使用ID选择器,内联样式属性或:active
。
:focus
与伪元素不匹配,因为它是simple selector,而简单的选择器只匹配实际元素。有关详细说明,请参阅我对this question的回答。
没有用于匹配所有伪元素的选择器的可能原因是因为它不具有意义,因为不同的伪元素工作方式不同并且对于哪些CSS属性有不同的限制可适用于他们。例如,!important
和*
不适用于content
,display
或::first-letter
。但是通用选择器的存在是因为元素本身并没有定义适用的CSS属性(not usually,无论如何);就CSS而言,每个元素或多或少相等。