CSS 背景透明实现

Css实现背景透明代码很简单

opacity:0.5;
filter:alpha(opacity=50);

但是使用这段代码,会使子元素也具有透明效果,于是牛人们使用定位来实现透明,这里不多说。

还有一种更简单的方法,那就是CSS3的rgba。

background-color: rgba(0, 0, 0, 0.5);

万恶的IE(IE9以下)是不支持rgba的,但是微软的滤镜可以解决。

filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#80000000', EndColorStr='#80000000');

代码中ColorStr的前两位是透明度的16进制表示,后6位是颜色值。透明度的计算工式:透明度*256 转换为16进制

又有问题啦,IE9也是支持滤镜的,同时使用rgba及filter,在IE9下是两个半透明重叠的效果。解决方案:

filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#80000000', EndColorStr='#80000000') \9;
background-color: rgba(0, 0, 0, 0.5);
background-color: transparent \9;

如果有更好的方案,请提出,共同讨论。

posted @ 2012-08-23 10:58  shinebob  阅读(2632)  评论(0编辑  收藏  举报