HTML5 rgba与opacity的属性 兼容ie6/7/8/9各浏览器

在css3之前,在样式中指定的颜色值只能为RGB颜色值,并且只能通过opacity属性来设置元素的透明度。CSS3中增加了3种颜色值-RGBA颜色值,HSL颜色值及HSLA颜色值,并且允许通过对RGBA颜色值和HSLA颜色值设定alpha通道的方法来更加容易地实现将半透明文字与图像互相重叠的效果


alpha通道与opacity属性的区别

opacity属性时css中专门用来指定透明度的一个属性,取值范围也在0-1之间,0表示完全透明,1表示不透明。使用alpha通道对元素设定透明度时,可以单独针对元素的背景色和文字颜色等来指定透明度,而opacity属性只能指定整个元素的透明度。

alpha通道与opacity属性并不兼容ie9以下的版本,以下为本人利用滤镜等方式解决了此问题,兼容各个版本。


RGBA方法兼容各个版本

[html]  view plain copy print ?

在CODE上查看代码片

派生到我的代码片

  1. <!DOCTYPE HTML>  
  2. <html lang="zh-CN">  
  3. <head>  
  4.     <Meta charset="UTF-8">  
  5.     <title>RGBa 与 opacity 效果的区别</title>  
  6.     <!--以下为通用浏览器的写法-->  
  7.     <style type="text/css">  
  8.        .main{ background:#000; width:300px; height:300px; }  
  9.        .main-1{ background:rgb(255,255); background:rgba(255,0.2);width:300px; height:50px; }  
  10.     </style>  
  11.       
  12. <!--以下为针对ie浏览器的写法-->  
  13.     <!--[if IE]>  
  14.     <style type="text/css">  
  15.        .main-1{  
  16.             background: transparent;  
  17.             filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#20ffffff'endColorstr='#20ffffff');  
  18.             zoom: 1;  
  19.             }  
  20.     <![endif]-->  
  21.      
  22. </head>  
  23. <body>  
  24.    <div class="main"><div class="main-1"></div></div>  
  25. </body>  
  26. </html>  




opacity方法兼容各个版本

派生到我的代码片

           .main{ background:#000; width:300px; height:300px; }  
  1.        .main-1{ background:#fff; filter:alpha(opacity=20);opacity:0.2;width:300px; height:50px; }  
  2.     </style>  
  3.       
  4. </head>  
  5. <body>  
  6.    <div class="main"><div class="main-1"></div></div>  
  7. </body>  
  8. </html>  



两者的不同(同样的背景、布局,只是一个采用opacity方法,另外一个采用rgba方法)


opacity方法

派生到我的代码片

    <span style="font-family:Simsun;font-size:12px;"><!DOCTYPE HTML>  
  1.        .main{  
  2.         background:#000;  
  3.         filter:alpha(opacity=20);  
  4.         opacity:0.2;   
  5.         width:300px;   
  6.         height:300px;   
  7.         top:0; left:0;   
  8.             }  
  9.   
  10.   
  11.      .main-1{   
  12.         background:#fff;  
  13.         filter:alpha(opacity=50);  
  14.         opacity:0.5;   
  15.         width:300px;  
  16.         height:50px;   
  17.         color:#000;   
  18.         }  
  19.        
  20.    <div class="main"><div class="main-1">背景、文字都透明</div></div>  
  21. </html></span>  


RGBA方法

派生到我的代码片

    <span style="font-size:12px;"><!DOCTYPE HTML>  
  1.        .main{ background:rgb(0,0); background:rgba(0,0.2); width:300px; height:300px; top:0; left:0; }  
  2.        .main-1{ background:rgb(255,0.5);width:300px; height:50px; color:#000; }  
  3. <!--以下为针对ie浏览器的写法-->    
  4.     <!--[if IE]>    
  5.     <style type="text/css">    
  6.        .main{    
  7.             background: transparent;    
  8.             filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#20000000'endColorstr='#20000000');    
  9.             zoom: 1;    
  10.             }   
  11.        .main-1{    
  12.             background: transparent;    
  13.             filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#50ffffff'endColorstr='#50ffffff');    
  14.             zoom: 1;    
  15.             }    
  16.     </style>    
  17.     <![endif]-->    
  18.        
  19.    <div class="main"><div class="main-1">背景透明,文字不透明</div></div>  
  20. </html></span>  

从上面的运行结果来看,得出以下结论:

使用alpha通道对元素设定透明度时,可以单独针对元素的背景色和文字颜色等来指定透明度,而opacity属性只能指定整个元素的透明度。

案列下载地址 http://pan.baidu.com/s/1o6KaTya

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码