【发布时间】:2011-12-27 16:37:34
【问题描述】:
我在我的H4 元素上使用伪元素:after,并为content 属性提供attr('class'):
<h4 class="category-label">This is a new event</h4>
与
h4:after
{
content: attr(class);
display: block;
padding: 1em;
background-color: #555;
}
将产生预期的结果——H4 元素的适当标签 with 类,而对于 H4 元素没有任何标签 没有 class 属性在 大多数浏览器罢工> Safari 5+。
但是在 IE9 中,没有class 属性的H4 元素仍然会创建块伪元素,从而导致没有文本的空白灰色框,这不是预期的行为。在下图中,只有第一个块包含带有 class 属性的 H4,其值为“panel;”第二和第三块中的其他H4 元素没有任何class 属性:
有没有办法确保 IE9 不会为缺少引用内容属性的父元素显示伪内容?不应该呈现没有内容的伪元素...
【问题讨论】:
-
郑重声明,您不应该引用
class这个词。正确的语法是attr(class),而不是attr('class')。 -
完全正确 - 对不起。我的实际代码没有被引用。
-
另外,这是预期行为,所以它不是 IE9 错误。它也发生在支持生成内容的其他浏览器中(请参阅this fiddle)。我会解释原因,但我必须写一个完整的答案......
-
啊 - 我检查了 Chrome 和 FF 上的小提琴,你是对的。与 IE9 的行为相同。似乎我在 iOS 和 Safari 5+ 上进行测试,如果缺少属性,它根本不会呈现内容。这是具有意外行为的 Safari!
-
我将在这里插入相关规范。不太热衷于添加解释行为但实际上并没有回答您的问题的答案:|在此处查看
attr()的描述:w3.org/TR/CSS2/generate.html#content 然后阅读此部分:w3.org/TR/css3-content/#inserting
标签: css internet-explorer-9 pseudo-element