【问题标题】:Select all pseudo elements and classes选择所有伪元素和类
【发布时间】:2015-09-28 19:17:24
【问题描述】:

有一堆伪元素和类:

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 中的所有元素。

现在,我很想知道为什么即使在 css3 或 css4 中也没有单个选择器来选择 DOM-Tree 之外的所有伪元素和伪类?

*pseudo{
  color: red;
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

    * 不匹配伪元素,因为它是simple selector,而简单的选择器只匹配实际元素。详细解释见我对this question的回复。

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

    【讨论】:

    • 我不这么认为。如果你看到问答here就会明白... * 不会选择伪元素。
    • @BhojendraNepal:BoltClock 也是这么说的。一个简单的选择器只匹配 实际 元素。
    • 哦!误解了。谢谢。
    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2012-06-30
    • 2020-09-13
    • 2017-06-11
    相关资源
    最近更新 更多