RGBA-浏览器参照基准:IE9+, Firefox3.6+, Chrome5+, Safari5+, Opera10.53+
语法:rgba(0-255,0-255,0-255,0-1)
background-color:#000000;
background-color:rgb(0,0,0); opacity:.5;
background-color:rgba(0,0,0,.5);
背景透明-浏览器参照基准:IE, Firefox3.6+, Chrome5+, Safari5+, Opera10.53+
.opacity{
position:relative;
z-index:3;
width:380px;
height:80px;
padding:20px;
background-color:#000;
color:#fff;
filter:alpha(opacity=60); /* For IE */
opacity:.6;
}
.opacity-text{
position:relative;
z-index:3;
width:380px;
height:80px;
padding:20px;
color:#fff;
margin-top:-120px;
}
.text{
position:relative;
z-index:1;
width:320px;
height:20px;
margin:-110px 0 0 10px;
padding:50px;
background:#f00;
}
.rgba-opacity{
position:relative;
z-index:3;
width:380px;
height:80px;
padding:20px;
background-color:rgba(0,0,0,.7);
color:#fff;
}
推荐的半透明实现方法,简单易用!
.text-cover {
display: block;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
}
.text-cover i {
position: absolute;
bottom: 0;
left: 0;
display: block;
width: 100%;
height: 30px;
line-height: 30px;
overflow: hidden;
color: #fff;
font-style: normal;
text-indent: 10px;
/* 此种缩进实现边距,针对单行文本甚是有效,多行则不行,可通过 padding: 0 10px 来设置,
注意右侧文本不要贴边,如此100%的宽度会溢出,需在父层设置 overflow: hidden; */
/* 半透明核心代码 */
background-color: rgba(0, 0, 0, 0.5);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#7F000000, endColorstr=#7F000000);
/* 此处的 */
}
说明:#88000000 的前两位数字控制透明度,取值16进制从00 -> FF(越小越透明),00表示完全透明,FF就是全不透明,后面六位是色值。
DXImageTransform.Microsoft.gradient 滤镜里的 startColorstr 参数值是 #AARRGGBB 形式的, 其中的AA是代表不透明度的十六进制,00表示完全透明,FF就是全不透明,化成十进制的范围就是0~255,剩下的 RRGGBB 就是颜色的十六进制代码。
举例如:background: rgba(125, 0, 0, .3); 表示的是30%不透明度的红色背景。把30%的不透明度转换成十六制呢的方法如下:先计算#AA的的十进制x,x/255 = 3/10,解得x=3*255/10,然后再把x换算成十六进制,约等于4C。
.0(00) .1(19) .05(0C) .15(26)
.2(33) .3(4C) .25(3F) .35(59)
.4(66) .5(7F) .45(72) .55(8C)
.6(99) .7(B2) .65(A5) .75(BF)
.8(CC) .9(E5) .85(D8) .95(F2)
显示隐藏有透明度变化时,IE8-下的滤镜透明有时出问题(待进一步研究),设置时间为0可解决
全兼容半透明测试,五种颜色及透明度。设置背景图片作为陪衬对比,增强浏览效果。
颜色:白
.box1 { background-color: rgba(255, 255, 255, .8);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#CCFFFFFF, endColorstr=#CCFFFFFF); }
.box2 { background-color: rgba( 0, 0, 0, .5);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#7F000000, endColorstr=#7F000000); color: #fff;}
.box3 { background-color: rgba(255, 0, 0, .4);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#66FF0000, endColorstr=#66FF0000); }
.box4 { background-color: rgba( 0, 255, 0, .3);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#4C00FF00, endColorstr=#4C00FF00); }
.box5 { background-color: rgba( 0, 0, 255, .2);
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#330000FF, endColorstr=#330000FF); }
针对Win7下的IEtester中IE6不透明,可在滤镜前单独设置 _background 色,如下:
.box5 {
background-color: rgba( 0, 0, 255, .2);
_background: #00f;
filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#330000ff, endColorstr=#330000ff);
}
但事实上,原生的IE6是支持的,无需单独设置 _background 色。
今天(2014-01-06)注意到一个问题,IE中使用如上滤镜方法,若有显示隐藏的交互时,不能有渐变透明度的变化,即透明度变化时间大于0,有时出问题,可能是页面比较大的情况下。做测试如上: