这篇汇总主要是提供一些CSS不透明的详细介绍,代码示例和解释,以实现这项有用的CSS技术在您的项目中兼容全部浏览器。 css
关于CSS 透明度,有一点须要注意的是,它虽然使用了不少年,但它一直以来都不是一个标准属性。它是一种非标准技术,应该是CSS3规范的一部分。 html
1. 旧的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引擎)已经不在支持这个属性。 orm
2. 在Firefox, Safari, Chrome和Opera下的CSS透明度 htm
如下代码是除了IE外的全部当前浏览器的最简单,最最新的不透明度设置的CSS语法: ip
#myElement { opacity: .7; } ci
上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素彻底不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。
opacity属性能够精确地小数点后两位,因此值取“.01”和“.02”其实是不一样的,虽然可见度很难被发觉。通常状况下,精确到一位就能够了,取值如“.3”或“.7”。
3. IE下的CSS透明度
IE下照旧有别于其余浏览器,而且目前也有三个不一样版本的IE在普遍使用,透明度设置是不一样的,有时须要额外的CSS来控制:
#myElement { filter: alpha(opacity=40); }
上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7须要注意:为了使得透明设置生效,元素必须是“有布局”。一个元素能够经过使用一些CSS属性来使其被布局,有如width 和 position。关于微软专有的hasLayout属性详情,以及如何触发它,参考这里。
另一个设置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”的方法。
4. 使用JavaScript设置和改变CSS透明度
您可使用下面的语法访问JavaScript中的CSS opacity 属性:
document.getElementById("myElement").style.opacity = ".4"; // 针对全部现代浏览器 document.getElementById("myElement").style.filter = "alpha(opacity=40)";// 针对IE
上面的代码可使用行内循环或者其余动态函数递增修改透明度的值。固然,你必须先经过特征检测来决定使用哪一行代码。
5. 使用JQuery设置和改变CSS透明度
直接使用jQuery设置CSS透明度更直观更容易实现,由于在全部浏览器代码都同样,而且你没必要担忧在IE下元素是否“haslayout”:
$("#myElement").css({ opacity: .4 }); // 全部浏览器有效
您也可使用一下jQuery代码使一个元素动画透明:
$("#myElement").animate({ opacity: .4 }, 1000, function() { // 动画完成,全部浏览器下有效 });
无论元素的透明度在动画开始时是多少,它都会渐变到透明度为“.4”。动画的速度经过值“1000”设定,动画时间以毫秒为单位。代码中的最后一个属性是一个可选回调函数,将在动画完成后执行。
若是该元素的透明度在CSS中已经设定为“.4”,那在动画运行的时候,你将不会发觉有任何不一样,因此动画开始和最终透明度要有所不一样。
6. 经过 RGBA的透明度
另外一个CSS3技术只支持部分新的浏览器(Firefox 3+, Opera 10.1+, Chrome 2+,Safari 3.1+),可经过RGBA的alpha通道的方式设定。语法以下:
#rgba { background: rgba(98, 135, 167, .4); }
在上面的定义中,经过RGB(前三个数字)给背景设定颜色,而后最后一个是alpha设置,以执行给定颜色的透明度。这个alpha设置跟opacity 属性同样,可设定任何0到1的数字,精确获得两位小数点。数字值越大,就越接近彻底不透明的颜色。
7. 经过 HSLA的透明度
相似以前的定义,CSS3还容许使用HSLA单独设置颜色和alpha值,HSLA表示Hue(色调), Saturation(饱和度), Lightness(亮度), 和Alpha。如下是HSLA透明的例子:
#hsla { background: hsla(207, 38%, 47%, .4); }
更多关于HSLA颜色的解释,参考这篇来自W3.org的文章。如同RGBA透明度,最后的数字表示透明度设置,跟RGBA起一样的做用。注意RGBA和HSLA透明度的一个重要的好处是这些透明度设置不会影响到子元素的,但经过opacity属性的方式则会。alpha设置的RGBA和HSLA只影响背景颜色的透明度,仅此而已。