2011-06-20 36 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中非常麻烦。如果半透明背景真的值得,您应该考虑一些成本/收益方面的考虑。祝你好运! :) –