Select 所有伪元素和 类

Select all pseudo elements and classes

有一堆伪元素和类:

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等等。我不知道它们是什么元素。但我认为它们是伪元素,因为它有双冒号。

有一个星号 select 或 * 到 select DOM-Tree.

内的所有元素

现在,我很好奇为什么没有单个 select 或 selecting 所有伪元素和 DOM 之外的伪 类-甚至 css3 或 css4?

中的树
*pseudo{
  color: red;
}

* 选择任何元素,无论其性质或状态如何。这样,它已经覆盖了所有伪类,只是零特异性

例如,* 将匹配任何元素,无论它是 :first-child:last-child 还是两者(它本身可以使用 :only-child:first-child:last-child)。它还将匹配任何 link,无论它是未访问的 (:link) 还是已访问的 (:visited),以及它是否匹配 :hover/[=19 中的一个或多个=]/:focus.

如果您正在寻找一种方法来为给定元素使用伪类 覆盖任何和所有 CSS 规则(这在动态伪[= 的情况下很有用) 47=] 例如 links),唯一的方法是使用 ID 选择器、内联样式属性或 !important.

*不匹配伪元素因为是一个simple selector, and a simple selector only matches actual elements. See my answer to this question求详细解释

没有匹配所有伪元素的选择器的可能原因是拥有一个没有意义,因为不同的伪元素工作方式不同并且对哪个伪元素有不同的限制CSS 属性可以应用于它们。例如,contentdisplay 不适用于 ::first-letter::first-line::selection。但是通用选择器存在是因为元素本身没有定义适用的 CSS 属性(无论如何 not usually);就 CSS 而言,每个 元素 或多或少相等。