【问题标题】:How to have pseudo-elements on pseudo-elements?如何在伪元素上有伪元素?
【发布时间】:2015-01-03 06:19:09
【问题描述】:

这会创建两个伪元素:

.myElement {}
.myElement::before,
.myElement::after {
    content: '';
}

如何给元素添加更多的伪元素?有没有办法将伪元素添加到另一个伪元素?

【问题讨论】:

标签: css


【解决方案1】:

不,你不能。

伪元素定义为(W3 docs

12.1 :before 和 :after 伪元素
顾名思义,:before 和 :after 伪元素指定元素的文档树内容之前和之后的内容位置.

由于文档树是元素定义的源代码,一个伪元素不能包含另一个伪元素,因为它没有树。

【讨论】:

    【解决方案2】:

    有一个 CSS 伪元素 '::before(2)' 但不幸的是,目前还没有任何浏览器支持:

    div { content: 'A' }
    div::before { content: 'B'; }
    div::before(2) { content: 'C'; }
    

    ...会产生以下渲染对象:

    ,-----------------------.
    | ,---. ,---.           |
    | | C | | B | A         |
    | `---' `---'           |
    `-----------------------'
    

    来源:http://www.w3.org/TR/css3-content/#inserting0

    浏览器支持:http://realworldvalidator.com/css/pseudoelements/::before%282%29

    【讨论】:

    • 它不像你想象的那样做。这是一个简单的例子,jsfiddle.net/29zxmfbv/1
    • @GajusKuizinas 好的,我不明白你需要 2 个 content 属性。更新了我的答案,但暂时帮不了你。
    • 太棒了。感谢您进行研究。得到了我的支持。 :)
    • 为什么它被否决了? oO 对 W3C 草案中一个晦涩但现有的部分的引用、视觉解释和关于不支持的说明:+1
    • @GajusKuizinas 谢谢,您能否通过单击对您最有帮助的答案的勾号将您的问题设为“已回答”。
    【解决方案3】:

    这是不可能的,您可能需要将您的元素包装在另一个元素中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多