css 透明属性

最近因为工作需要,需要自定义弹窗,并让背景透明。因为自己也是初学者,就碰到了比较经典的问题。

看代码

<div class="top">
<div class="sub">css opacity attribute!</div>
</div>

以上结构,如果设置top的opacity属性来达到透明效果时,你会发现,里面的元素全部继承了透明的效果,这显然不能达到要求。至少字体总得看的清楚吧。
从网上搜罗了下相关知识点

先给出标准的css透明写法,兼容大部分浏览器

.top {
filter
:alpha(opacity=50);
-moz-opacity
:0.5;
-khtml-opacity
: 0.5;
opacity
: 0.5;
}

上面的几个属性分别是:

  • opacity: 0.5; 这是最重要的,因为它是CSS标准.该属性支持Firefox、Safari和 Opera.
  • filter:alpha(opacity=50); 这个是为IE6设的,可取值在0-100,其它三个0到1.
  • -moz-opacity:0.5; 这个是为了支持一些老版本的Mozilla浏览器。
  • -khtml-opacity: 0.5; 这个为了支持一些老版本的Safari浏览器。

上面的例子涉及到透明属性的继承问题

标准的是,当父元素设置了透明属性,其子元素也会跟着继承透明属性,很多会马上想到,把子元素重新设置opacity:1,但是很可惜,这是无效的。有些人为了省时间,可能当子元素里面的内容多少还看得清楚的时候,就这点问题就会忽略不计。当然,也有很多需求是需要完全不透明的内容。

比较有用的一个方法就是,添加多一个div(子元素),这个div和你要显示的内容块是属于兄弟关系,那么给Div和内容块设置绝对定位,然后给div设置透明度,此时的内容块会覆盖在上面,也就模拟了我们所要的效果。

具体写法可参考:css透明继承问题

以上内容部分来自帕兰印象

posted @ 2011-10-08 09:23  菜心作坊  阅读(1997)  评论(1编辑  收藏  举报