我已经阅读了文档,大概理解了::before
和::after
的作用。如果我的理解是正确的,它们应该总是与其他元素结合使用。但我看到的网页却像这样:
<body>
<div class="container-fluid">
::before
<div> ... </div>
::after
</div>
<body>
我无法理解这里的::before
和::after
是做什么的?
我已经阅读了文档,大概理解了::before
和::after
的作用。如果我的理解是正确的,它们应该总是与其他元素结合使用。但我看到的网页却像这样:
<body>
<div class="container-fluid">
::before
<div> ... </div>
::after
</div>
<body>
我无法理解这里的::before
和::after
是做什么的?
::before
和 ::after
是 CSS 伪元素,它们在匹配元素之前和之后创建。
伪元素通常不会显示在 HTML 元素树中。但是,如果您使用正确类型的调试工具(如 Chrome 检查器),则可以看到这些特殊元素。由于现在通常使用伪选择器来样式化页面,因此拥有一个可以显示它们的调试工具非常有用。
要从 Chrome 检查器(或其他能力强大的工具)验证此行为,请尝试使用 CSS 向其中一些伪元素添加一些内容,例如:
h1:before {
content: 'before';
}
::before
和 ::after
在实际页面中不会显示出来。另外,我所指的是HTML元素结构,而不是页面的实际视图,但我可以看出我表达得不够清楚! - jsalonen我猜你能看到这个,因为chrome检查器可以用来检查这个:http://www.youtube.com/watch?v=AcKlJbmuxKo
它们实际上并不在服务器发送的原始HTML中,而是Chrome检查器仅添加的。
您可以使用它们来查看它们的屏幕箱模型和声明的样式。
::before
和::after
是伪元素,您可以在以下示例中看到:
CSS:
.container-fluid>p::before{
content: "HI";
}
.container-fluid>p::after{
content: "Bee";
}
http://jsfiddle.net/vX2jW/ 您可以在http://css-tricks.com/almanac/selectors/a/after-and-before/中了解更多信息。