为什么这个CSS:before语句在IE 8,IE9中不起作用?

时间:2013-10-17 12:24:34

标签: css internet-explorer pseudo-element css-content

使用:在CSS之前获取图像/图标(请参见下图中的圆圈),但在Internet Explorer 8+中,它只是没有显示出来。

这是网站: http://www.websiteprofessioneel.nl

下面的图片链接显示了右侧元素(它是第一个帖子标题中的图标),在此screendump上显示为圆圈 http://tinypic.com/view.php?pic=xxd9f&s=5#.Ul_WajZRoWY

这是CSS:

.welpen h2:before {
    content: url("/wp-content/uploads/z-welpen-category-small.png") !important;
}

也许还有什么遗漏?所有其他浏览器工作正常,据我所知peudo CSS至少在IE9中得到完全支持,但它在IE8,9及以上版本都不起作用。

2 个答案:

答案 0 :(得分:3)

IE可能正在使用Quirks Mode

Internet Explorer可以在怪癖或标准模式下运行。怪癖模式的目的是使新的符合标准的IE(8+)能够读取和处理人们之前为IE7编写的代码 - 。

可能的原因#1:无效或缺席DOCTYPE声明

尝试在HTML文档的第一行指定此内容:

<!DOCTYPE html>

确保<html>元素存在。尽管HTML5规范说它不需要,但是当未指定时,旧的IE(10岁及以上)往往会进入怪癖模式。

可能的原因#2:网站失败(X)HTML验证

如果存在,请确保W3C验证器不会抛出任何错误,因为这些错误也会触发IE中的Quirks模式。 Yours has 15

实际原因更不可能:故意触发怪癖模式

经过评论讨论后,事实证明我对怪癖模式是正确的,但错误的原因。确保没有任何元标记告诉IE以怪癖模式运行,例如:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

答案 1 :(得分:3)

问题是因为doctype中有问题,对html5使用<!DOCTYPE html>并使其在ie8上使用

<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

如果您不想要html5,请使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

这将解决我认为的问题