2011-06-20 62 views
0

例:http://jsfiddle.net/NBWmU/1/文本確實在IE7透明背景不抗鋸齒/ 8

我用下面的CSS讓我的div的背景在儘可能多的瀏覽器儘可能透明:

background: rgb(255, 255, 255) transparent; 
background: rgba(255, 255, 255, 0.6); 
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99FFFFFF, endColorstr=#99FFFFFF); 
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99FFFFFF, endColorstr=#99FFFFFF)"; 

由於某種原因,在透明div上面的IE8文本看起來很尖銳和像素化,而且看起來與普通背景上div外的相同文本完全不同。我還沒有在其他瀏覽器中測試過。

有誰知道我可以強制文本呈現相同的地方嗎?我試過使用透明PNG,但這導致了一些其他渲染問題,我希望有另一種方式。

回答

2

是:不使用-MS-過濾器和過濾器:進程id:DXImageTransform等

有沒有在過濾器的執行使其使用備用文字渲染的錯誤。讓它保持一致的唯一方法是在涉及文本時不要使用它,或者在所有文本中使用它(以便所有文本都同樣醜陋和像素化)。

我通常做的是,我只使用標準的css透明度,如rgba()顏色,不透明度等。在IE特定的CSS中,我將背景/文本顏色設置爲近似匹配真正的透明度。

而對於圖像,我創建了一個透明的圖像精靈的特定於IE的副本。但透明PNG將導致ie7和更老的同樣的問題,所以我通常回落到完全不透明(即不透明)在ie7.css

+0

謝謝,跨瀏覽器透明度似乎是一個惱人的問題。我的頁面中的背景是一個圖像,我真的需要透明div的大小來適應文本(所以不能只編輯背景圖像)。我之前做的是將透明div背景設置爲小平鋪透明png(這似乎避免了抗鋸齒問題),但偶爾會導致整個圖像顯示爲空白。還有什麼可以想到的嗎? – Flash

+0

如果支持古代瀏覽器很重要,可以嘗試將文本絕對放置在包含透明顏色的空白div的上方(包含文本的元素不得是透明的元素的後綴)。不幸的是,這會產生很多其他的複雜情況,因爲你不能依靠div來調整內容的大小,堆疊順序(z-index)在舊版本的IE中非常麻煩。如果半透明背景真的值得,您應該考慮一些成本/收益方面的考慮。祝你好運! :) –