CSS 透明度设置方法及常见问题解析

怎样在CSS样式中设置背景的透明度

看看下面的CSS:

img
{
opacity:0.4;
filter:alpha(opacity=40); /* For IE8 and earlier */
}

IE9,Firefox,Chrome,Opera,和Safari浏览器使用透明度属性可以将图像变的不透明。 Opacity属性值从0.0 - 1.0。值越小,使得元素更加透明。

IE8和早期版本使用滤镜:alpha(opacity= x)。 x可以采取的值是从0 - 100。较低的值,使得元素更加透明。

怎样在CSS样式中设置背景的透明度,下面给出一个具体的实例。把类为box的层设为透明。
其中background:#000; filter:alpha(opacity:30); opacity:0.3;为关键代码,当opacity值为1时,表示完全不透明,为0时表示完全透明。
其他的属性介绍如下:
opacity: 0.3;这是“最重要的”,因为它是在CSS的现行标准。这将在Firefox,Safari和Opera的大多数版本的工作。这将是你所需要的一切如果所有的浏览器都支持目前的标准。当然是他们不会错。
filter:alpha(opacity=30);这一个是针对IE浏览器
-moz-opacity:0.3;你需要这一个支持老版本的Mozilla浏览器如Netscape Navigator。
-khtml-opacity: 0.3;这是旧版本的Safari(1.×)当渲染引擎是使用仍被称为kthml,而不是目前的WebKit。

CSS中用javascript或jquery实现透明度的改变

如何用CSS实现背景半透明效果?我们一般的做法是用两个层,一个用于放文字,另一个用于做透明背景,因为透明滤镜的效果会影响到里面的内容。

不过如果你只需求在IE下实现,使用CSS实现透明度有很多方案,这里只是介绍大家通用的方法:

1.  .transparent_class {

2.        filter:alpha(opacity=50);//兼容IE解决方案

3.        opacity:0.5;//标准的css透明度,在大部分的标准浏览器Firefox, Safari, and Opera都有效

4.        -moz-opacity:0.5;//老的Mozilla browsers如NetscapeNavigator.几乎没有可以不需要

5.        -khtml-opacity:0.5;//兼容老的Safari (1.x) 版本,很少可以不用  

6.  }
知道了CSS改变透明度的原理,那么使用javascript动态改变透明度就简单了:
1.  <html>

2.      <head>

3.          <title>title>

4.          <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">

5.          <style> 6. div{width:100px;height:100px;background-color:red} 7. style>

8.          <script> 9. window.onload =function(){ 10. var myDiv = document.getElementById("transparent_div"); 11. myDiv.onclick =function(){ 12. myDiv.style.opacity =".4";//针对所有通用浏览器 13. myDiv.style.filter ="alpha(opacity=40)";//针对IE浏览器 14. } 15. } 16. script>

17.    head>

18.    <body>

19.        <divid="transparent_div">this istransparent divdiv>

20.    body>

21.html>
jQuery改变透明度实现如下:
1.  $("#transparent_div").css({ opacity:.4});
使用jQuery还可以轻松实现动画效果:
1.  $("#transparent_div").click(function(){

2.       $("#transparent_div").animate({ 

3.           opacity:.4 

4.           },1000,function(){

5.               alert("动画完成");

6.       }); 

7.   });

CSS透明技巧汇总

一、旧的Opacity设置


以下代码是Firefox和Safari旧版本所需的透明度设置:
#myElement {-khtml-opacity: .5;-moz-opacity: 0.5;}
-khtml-opacity设置是针对旧版本的Webkit渲染引擎,这种专用属性现在已经过时了,除非你还有需要兼容Safari 1.x.的用户。
第二行使用专用属性 -moz-opacity是 为了兼容Mozilla渲染引擎的早期版本,以及追溯到Netscape Navigator。 Firefox 0.9以后就不要求使用-moz-opacity属性,Firefox 3.5(现在使用Gecko引擎)已经不在支持这个属性。

CSS 透明度设置方法及常见问题解析_第1张图片

二、在Firefox, Safari, Chrome和Opera下的CSS透明度 
以下代码是除了IE外的所有当前浏览器的最简单,最新的不透明度设置的CSS语法:
#myElement { opacity: .7; }
上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。

opacity属性可以精确地小数点后两位,所以值取“.01”和“.02”实际上是不同的,虽然可见度很难被发觉。一般情况下,精确到一位就可以了,取值如“.3”或“.7”。

三、IE下的CSS透明度
IE下照旧有别于其他浏览器,并且目前也有三个不同版本的IE在广泛使用,透明度设置是不同的,有时需要额外的CSS来控制:
#myElement {      filter: alpha(opacity=40);  }
上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7需要注意:为了使得透明设置生效,元素必须是“有布局”。一个元素 可以通过使用一些CSS属性来使其被布局,有如width和position。

另外一个设置IE8的CSS透明度的方法语法如下:
#myElement {      filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);
/* 第一行在IE6, IE7和IE8下有效 */

-ms-filter:       “progid:DXImageTransform.Microsoft.Alpha(opacity=40)”;
/*第二行仅在IE8下有效 */}
第一行代码针对当前所有IE版本,第二行仅针对IE8。
注意两行代码的不同之处:在第二行代码中,在filter属性前跟着-ms-前缀,并且属性值有加引号,这些都是语法所必须的。
说实在,有了如前一个例子中用alpha(opacity=40)的语法来作用于任何版本的IE下的任何有布局的元素之后,并不能确定是否还有必要用“progid”的方法。

CSS如何只改变背景透明度,不改变子元素透明度?

一般情况下,我们可以使用css的opcity属性改变某个元素的透明度,但是其元素下的子元素的透明度也会被改变,即使对子元素重新定义也没有用,例如:
<div style="opacity:0.4; background-image:url(...);">  
 <div style="opacity:1.0;">  
  显示文字  
 div>  
div>
文字元素的透明度也会是0.4。于是想一想,如果有方法只改变背景的透明度就能解决此问题了。
 
方法1:使用一张透明的图片做背景可以达成效果,但是有没有更简单的方法呢?
 
方法2:使用RGBA。

例如:
div style="background-color:rgba(0, 0, 0, 0.4)">  
   <div>  
      显示文字  
   div>  
div> 

CSS在设置了透明度的层里,怎么让里面的层不透明

在外层DIV设置了CSS代码如下
opacity: 0.8;
-moz-opacity: 0.8;
filter: alpha(opacity=80);
但在此层里面的层都透明了,怎么让里面的层不透明?
方法:
如果是颜色,完全可以用背景色透明 rgba来代替opacity,
如果是图片,就用ps简单处理一下即可。
opacity这个属性指定的透明是包括里面的元素的,不可能只有外面透明,里面不透明

css里边写透明样式怎么写

如果是用样式的话需要用到滤镜
style="filter:Alpha(
Opacity=opacity, 
FinishOpacity=finishopacity,
Style=style, 
StartX=startX,
StartY=startY,
FinishX=finishX,
FinishY=finishY
)"
说明:
Opacity:起始值,取值为0~100, 0为透明,100为原图。
FinishOpacity:目标值。
Style:1或2或3
StartX:任意值
StartY:任意值

例子:
filter:Alpha(Opacity="0",FinishOpacity="75",Style="2") 
但是因为滤镜的兼容性问题,最好是不要用,可以用ps做图的时候,把背景调一下透明度后导成png格式的图片就行了,如果透明的背景颜色一样的话,那么你可以切成1px*1px大小的png图片平铺,gif只支持透明度100%也就是完全透明的图片,半透明的不支持,而png格式的图片则不存在什么问题,唯一会有问题的地方就只是IE6不兼容透明png格式而已。

要设置某一元素的背景为透明,在 chrome 、firefox、opera 下是这样的:

[css]  view plain  copy
  1. background-color: rgba(0000.4);  

rgba 中的最后一个参数 0.4 就是想要的透明度,范围在0~1之间。

在 ie 中一般是这样的:

[css]  view plain  copy
  1. background-colorrgb(000);  
  2. filter: alpha(opacity=40);  

opacity 表示透明度,它的值范围在 0~100 之间


那么如何兼容各浏览器呢?只要把它们写在一起就行了。

由于 ie 不支持 rgba,所以会忽略之。其他浏览器对于自己不支持的,一般也会忽略。

下面来个示例:

HTML 代码:

[html]  view plain  copy
  1. <body>  
  2.     <div class="non-transparent">  
  3.         aaaaa  
  4.         div>  
  5.     body>  
  6.       
  7. <div class="transparent">  
  8.     <div class="box">  
  9.         box  
  10.         div>  
  11.     div>  
CSS 代码:
[css]  view plain  copy
  1. .non-transparent:hover {  
  2.     background-color: yellow;  
  3. }  
  4.   
  5. .transparent {  
  6.     positionabsolute;  
  7.     top: 0;  
  8.     left: 0;  
  9.       
  10.     text-aligncenter;  
  11.       
  12.     width100%;  
  13.     height100%;  
  14.       
  15.     filter: alpha(opacity=40);  
  16.     background-colorrgb(000);  
  17.       
  18.     background-color: rgba(0000.4);  
  19. }  
  20.   
  21. .box {  
  22.     background-color: yellow;  
  23.     width50%;  
  24.     height50%;  
  25.       
  26.     positionrelative;  
  27.     left: 5%;  
  28.     top: 10%;  
  29. }  

另外,在 chrome、firefox、opera 中也可以这样:

opacity: 0.4;

但是这样的话,会把所有子元素的透明度也设置为同样的值,效果如下图:

你可能感兴趣的:(CSS3)