2010-03-30 60 views
10

我有以下的CSS代码如何让IE8接受CSS:在标签之前?

.editable:before { 
    content: url(../images/icons/icon1.png); 
    padding-right:5px; 
} 

这与下面的标记结合使用:

<span class="editable"></span> 

在我的图标出现在世界的每一个其他祝福的浏览器,但IE8似乎有这是一个问题。是不是:before伪元素CSS2?是不是content:也是一个CSS2命令?是什么赋予了?

+0

我不知道IE8,但:之前和之后在IE7及以下版本不支持。不知道他们是否最终在8点加入了支持。如果他们确实确定该页面不是在IE7仿真中渲染的。 – prodigitalson 2010-03-30 15:07:14

回答

23

更新:我误读了页面! IE 8 确实支持:之前的图像,它只是不在IE7兼容模式下。

IE8支持:before 但不 ,并且还作为图像内容时不兼容模式。荣誉@toscho进行测试!

我多么爱quirksmode.org,这使得处理这些东西至少中途忍受。这个人值得一枚奖章!在IE 8,歌剧院和Mozilla

<!DOCTYPE html> 
<meta charset="UTF-8"> 
<title>Generated content with an image</title> 
<style> 
p:before 
    { 
     content: ''; 
     padding: 20px; 
     background: url("css.png") center center no-repeat; 
    } 
</style> 
<p>Test</p> 

作品:

+0

啊,如果我没有记错的话,你也不能把html代码放进去,所以用就出来了...... – NibblyPig 2010-03-30 15:07:25

+0

@SLC:它被渲染成文本,是的。 – ANeves 2010-03-30 15:11:30

6

你可以使用该图像作为背景所生成的内容。 Live-Demo

+0

你是对的! IE8支持图像作为内容。干杯,更新了我的答案。 +1。 – 2010-03-30 23:10:40

24

其实你应该在这里小心并阅读细节。有关详情,请参阅this link - 规定

在Windows Internet Explorer 8,以及在IE8标准模式更高版本的Windows 的Internet Explorer,只有 一个冒号形式是伪元素是公认即:之前。从 Windows Internet Explorer 9开始,:: before伪元素需要两个 冒号,尽管单冒号形式仍然可识别并且行为 与双冒号形式相同。

意为浏览器<IE9 - 你必须使用:before>=IE9 - 你必须使用::before

+1

看到这救了我一堆时间,IE8不为我工作,因为我有:: – 2012-06-21 10:44:45

+0

双冒号是我的问题,谢谢你的头。如何让这个向前兼容?即如果它低于IEX,那么使用单个结肠,如果它大于IEY,则使用双冒号? – Jacques 2013-01-14 13:26:31

+3

@Jacques在IE> = 9的情况下,单独的冒号就可以正常工作。所以现在只需要使用单个冒号(这是CSS2.1标准)。只有CSS3区分伪选择符和伪元素的单冒号和双冒号。 – 2014-01-23 15:51:23

10

使用:before和:after,只是要小心,不要使用双冒号(::之后 - 不会工作,但:后会工作)。我为此失去了大约20分钟...

+0

谢谢,这实际上是我个人正在寻找的答案。 IE8现在正在为我工​​作。 (愚蠢的IE8!) – philtune 2013-09-05 13:31:01

+0

您好,先生,将我从潜在的一天调试会话中拯救出来,为什么这个&$(*#在每个兼容性表格中都不适用, – 2014-01-23 15:48:50

+0

,但更适合现代浏览器使用:: before当然,如果你可以加倍像 关闭:之前, 关闭::之前{等... – landed 2015-06-30 08:23:55

0

这是关于Pekka令人敬畏的例子... 我的项目高度是对行高...因此,我添加了一个填充底部:0px;

以防万一你下雨到这....

.icon-spinner:before { 
    content: ''; 
    padding: 15px; 
    padding-bottom: 0px; 
    background: url("css.png") no-repeat left top; 
}