【发布时间】:2012-07-14 00:27:02
【问题描述】:
::after 和 ::before 等 CSS2.1 伪选择器允许向页面添加文本内容。例如:
CSS
p:after { content:' Batman!' }
HTML
<p>Na Na Na Na Na Na</p>
在浏览器中输出
Na Na Na Na Na Na Batman!
我的问题是,使用相同的 HTML 源代码,为什么这个 CSS 片段
p { content:'My hero is' }
p:after { content:' Batman!' }
不输出这个
My hero is Batman!
而是输出这个?
Na Na Na Na Na Na Batman!
关于 content 属性的 w3c 规范:http://www.w3.org/TR/CSS21/generate.html#propdef-content
Answer - 我正在查看 CSS2.1 规范。 CSS3 spec indicates 即使没有 ::after 和 ::before 伪选择器也是可能的。但并不是每个浏览器都实现它。
- Chrome 20.0.1132.57:否
- Opera 12.00 r1467:是的
- Safari 5.1.7 (7534.57.2):否
- IE 8.0.7601:否(甚至没有实现 CSS2 内容属性)
【问题讨论】:
-
CSS 主要用于将文档内容(用 HTML 或类似标记语言编写)与文档表示分离,包括布局、颜色和字体等元素。
-
@pylover 你一定弄错了。 W3c 是 参考。我想你的意思是 w3school。
-
是的,抱歉,我会删除我的评论
-
IE8 确实在 CSS2 中为
:before和:after实现了content属性。它只是不理解 CSS3 双冒号::before和::after。