看看下面的CSS:
IE9,Firefox,Chrome,Opera,和Safari浏览器使用透明度属性可以将图像变的不透明。 Opacity属性值从0.0 - 1.0。值越小,使得元素更加透明。
IE8和早期版本使用滤镜:alpha(opacity= x)。 x可以采取的值是从0 - 100。较低的值,使得元素更加透明。
如何用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. }
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. });
一、旧的Opacity设置
第二行使用专用属性 -moz-opacity是 为了兼容Mozilla渲染引擎的早期版本,以及追溯到Netscape Navigator。 Firefox 0.9以后就不要求使用-moz-opacity属性,Firefox 3.5(现在使用Gecko引擎)已经不在支持这个属性。#myElement {
-khtml-opacity: .5;
-moz-opacity: 0.5;
} -khtml-opacity设置是针对旧版本的Webkit渲染引擎,这种专用属性现在已经过时了,除非你还有需要兼容Safari 1.x.的用户。
#myElement { opacity: .7; }
上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。
#myElement { filter: alpha(opacity=40); }
上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7需要注意:为了使得透明设置生效,元素必须是“有布局”。一个元素 可以通过使用一些CSS属性来使其被布局,有如width和position。
#myElement { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);
/* 第一行在IE6, IE7和IE8下有效 */
-ms-filter: “progid:DXImageTransform.Microsoft.Alpha(opacity=40)”;
/*第二行仅在IE8下有效 */}
第一行代码针对当前所有IE版本,第二行仅针对IE8。<div style="opacity:0.4; background-image:url(...);">
<div style="opacity:1.0;">
显示文字
div>
div>
文字元素的透明度也会是0.4。于是想一想,如果有方法只改变背景的透明度就能解决此问题了。div style="background-color:rgba(0, 0, 0, 0.4)">
<div>
显示文字
div>
div>
opacity: 0.8;
-moz-opacity: 0.8;
filter: alpha(opacity=80);
但在此层里面的层都透明了,怎么让里面的层不透明?
但是因为滤镜的兼容性问题,最好是不要用,可以用ps做图的时候,把背景调一下透明度后导成png格式的图片就行了,如果透明的背景颜色一样的话,那么你可以切成1px*1px大小的png图片平铺,gif只支持透明度100%也就是完全透明的图片,半透明的不支持,而png格式的图片则不存在什么问题,唯一会有问题的地方就只是IE6不兼容透明png格式而已。filter:Alpha(
Opacity="0",
FinishOpacity="75",
Style="2"
)
要设置某一元素的背景为透明,在 chrome 、firefox、opera 下是这样的:
rgba 中的最后一个参数 0.4 就是想要的透明度,范围在0~1之间。
在 ie 中一般是这样的:
opacity 表示透明度,它的值范围在 0~100 之间
那么如何兼容各浏览器呢?只要把它们写在一起就行了。
由于 ie 不支持 rgba,所以会忽略之。其他浏览器对于自己不支持的,一般也会忽略。
下面来个示例:
HTML 代码:
另外,在 chrome、firefox、opera 中也可以这样:
opacity: 0.4;
但是这样的话,会把所有子元素的透明度也设置为同样的值,效果如下图: