2011-08-23 69 views
2

我遇到了CSS内容属性,它可以将文本添加到元素中。CSS内容属性可以在IE7中工作吗?

例如:

.class:after{ 
    content: "testing"; 
} 

不幸的是这个CSS属性只在IE8的工作只有DOCTYPE定义。

无论如何还是有解决方法,我们可以使这个工作在IE7呢?无需使用JavaScript或jQuery。

+0

可能的重复[你如何解决IE不支持:之后?](http://stackoverflow.com/questions/813419/how-do-you-work-around-ie-not-supporting-after) –

回答

1

不,IE7 does not support it

唯一机会是使用JavaScript/jQuery的。

+0

太糟糕了我无法在我的情况下使用javascript – sams5817

18

我正在使用此解决方案,它不需要js。

.whatever { 
    *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = 'my content'); 
} 

不要添加伪元素:before或:after。也可以使用regular html entities和html十六进制实体;它们似乎是某些字符所必需的,例如正斜杠,/

感谢此解决方案的字体真棒:http://fortawesome.github.com/Font-Awesome/。我不确定他们是否开发了这种技术,但这是我第一次看到它的地方。

要针对IE7只有我用保罗爱尔兰的技术条件IE评论:http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

所以就变成:

.lt-ie8 .whatever { 
    *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = 'my content'); 
} 
+0

这是一个了不起的解决方案...我可以使用它来制作[JIR CSS文本替换](http://alicious.com/new-css-image-replacement -jir /)在IE7中工作(pre:':before'支持)。 – thirdender

+0

梦幻般的解决方案!我想为我的表单标签添加红色星号,所以我对IE7进行了如下修改。很棒。谢谢帕迪: form label.required {zoom}:expression(this.runtimeStyle ['zoom'] ='1',this.innerHTML + =' *'); } 表格标签。要求的跨度{font-size:16px; color:#ff0000; } – SixtySticks

+0

+1此解决方案。它对我来说就像一个魅力。真的很烦人,我不得不将所有这些大类添加到我的CSS中,但这绝对有效。再次感谢。 – sma

0

您可以使用CSS表达你的目标元素后添加的元素,然后用另一CSS表达式将内容添加到新的元素,比如:

.class {zoom: expression(this.runtimeStyle.zoom="1", this.appendChild(document.createElement("i")).className="ie-after");} 

.class .ie-after {zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = 'testing');}​ 
0

如果您的内容不intented在运行时改变,你可以ü SE以下内容:

.icon-glass { 
    *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); 
} 

如果你的内容被设计在运行时改变,你可以做这样的事情:

.icon-glass { 
    *top:expression(0, this.innerHTML = ''); 
} 

不幸的是,这是极其缓慢的。尽管IE6可能会在性能显着下降的情况下工作,但如果页面上的图标太多,IE7可能会崩溃。所以我不会推荐这个第二种技术,除非你只使用很少的图标,并且你可以承担性能的降低。