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

来源:互联网 发布:开淘宝店设计思路 编辑:程序博客网 时间:2024/06/05 10:34

在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 plaincopyprint?在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,255); background:rgba(255,255,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.     </style>  
  21.     <![endif]-->  
  22.      
  23.       
  24. </head>  
  25. <body>  
  26.    <div class="main"><div class="main-1"></div></div>  
  27. </body>  
  28. </html>  




opacity方法(兼容各个版本

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE HTML>  
  2. <html lang="zh-CN">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>RGBa 与 opacity 效果的区别</title>  
  6.     <style type="text/css">  
  7.        .main{ background:#000; width:300px; height:300px; }  
  8.        .main-1{ background:#fff; filter:alpha(opacity=20);opacity:0.2;width:300px; height:50px; }  
  9.     </style>  
  10.       
  11. </head>  
  12. <body>  
  13.    <div class="main"><div class="main-1"></div></div>  
  14. </body>  
  15. </html>  



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


opacity方法

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:SimSun;font-size:12px;"><!DOCTYPE HTML>  
  2. <html lang="zh-CN">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>RGBa 与 opacity 效果的区别</title>  
  6.     <style type="text/css">  
  7.        .main{  
  8.         background:#000;  
  9.         filter:alpha(opacity=20);  
  10.         opacity:0.2;   
  11.         width:300px;   
  12.         height:300px;   
  13.         top:0; left:0;   
  14.             }  
  15.   
  16.   
  17.      .main-1{   
  18.         background:#fff;  
  19.         filter:alpha(opacity=50);  
  20.         opacity:0.5;   
  21.         width:300px;  
  22.         height:50px;   
  23.         color:#000;   
  24.         }  
  25.     </style>  
  26.        
  27. </head>  
  28. <body>  
  29.    <div class="main"><div class="main-1">背景、文字都透明</div></div>  
  30. </body>  
  31. </html></span>  


RGBA方法

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:12px;"><!DOCTYPE HTML>  
  2. <html lang="zh-CN">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>RGBa 与 opacity 效果的区别</title>  
  6.     <style type="text/css">  
  7.        .main{ background:rgb(0,0,0); background:rgba(0,0,0,0.2); width:300px; height:300px; top:0; left:0; }  
  8.        .main-1{ background:rgb(255,255,255); background:rgba(255,255,255,0.5);width:300px; height:50px; color:#000; }  
  9.     </style>  
  10.     <!--以下为针对ie浏览器的写法-->    
  11.     <!--[if IE]>    
  12.     <style type="text/css">    
  13.        .main{    
  14.             background: transparent;    
  15.             filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#20000000'endColorstr='#20000000');    
  16.             zoom: 1;    
  17.             }   
  18.        .main-1{    
  19.             background: transparent;    
  20.             filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#50ffffff'endColorstr='#50ffffff');    
  21.             zoom: 1;    
  22.             }    
  23.     </style>    
  24.     <![endif]-->    
  25.        
  26. </head>  
  27. <body>  
  28.    <div class="main"><div class="main-1">背景透明,文字不透明</div></div>  
  29. </body>  
  30. </html></span>  

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

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

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


0 0
原创粉丝点击