2011-08-23 77 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可能會崩潰。所以我不會推薦這個第二種技術,除非你只使用很少的圖標,並且你可以承擔性能的降低。