2012-02-27 102 views

回答

3

因为:after:before不会在它们附着的元素之后或之前添加psuedoelements;他们在该元素的内容之后或之前添加它们。

查看here的技术细节 - 生成的元素是匹配元素的最后一个/第一个子项

5

看着the spec,你可以看到它们是相对于内容而不是元素插入的。

正如其名称所表明的:before和:after伪元素 指定的内容位置之前和元素的文档 树内容后。

的:前和:后伪元素从在文档树中的元素 继承任何可继承 属性其中它们 附着到。

例如,以下规则在每个Q元素之前在 之前插入一个开引号。引号的颜色将为红色,但字体 将与其余Q元素的字体相同:

q:before {content:open-quote;颜色:红色}

+0

'背景'[不可继承](http://www.w3.org/TR/CSS2/colors.html#propdef-background-color)。您应该在“同样来自规范”之前删除答案中的所有内容。 – thirtydot 2012-02-27 14:51:05

+0

默认情况下,不*继承*,直到你明确指定'background-color:inherit',但那是在点旁边... – BoltClock 2012-02-27 15:09:15

+0

@thirtydot完全不是我第一句话的意思。这是措辞不佳,因为我只是指包含所有内容的div,并不是指造型。我把所有内容都放进去之后,我对规格内容加了粗体,并没有考虑放置。 – scottheckel 2012-02-27 15:48:55

0

将'content'与after::before结合使用时,它会在现有内容之前或之后添加内容。所以,在div内。如果你想分析整个div的附加内容,你需要类似

<div id="w"> 
<div id="f">World </div> 
</div> 


#w:before{  
background: yellowgreen; 
content: "Hello "; 
} 
#f{ 
width: 200px; 
height: 200px; 
background: gold; 
margin: 100px; 
padding: 100px; 
} 
#w:after{  
background: burlywood; 
content: "StackOverflow"; 
}