选择所有伪元素和类

时间:2015-07-10 06:34:23

标签: css css3 css-selectors pseudo-element pseudo-class

有许多伪元素和类:

Pseudo Elements

  

:: after,:: before,:: first-letter,:: first-line,:: selection,:: backdrop

Pseudo Classes

  

: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;
}

1 个答案:

答案 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*不适用于contentdisplay::first-letter。但是通用选择器的存在是因为元素本身并没有定义适用的CSS属性(not usually,无论如何);就CSS而言,每个元素或多或少相等。