您当前的位置: 首页 > 前端教程 > CSS教程 > CSS透明度实现方法总结

CSS透明度实现方法总结

作者:不详 来源:网络 发布时间: 2010-07-16 17:38 点击:
近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情。目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效。 这篇汇总主要是提供一些CSS不透明的详细介绍,代码示例和解释,以实现

CSS透明度实现方法总结

  近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情。目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效。
  
  这篇汇总主要是提供一些CSS不透明的详细介绍,代码示例和解释,以实现这项有用的CSS技术在您的项目中兼容所有浏览器。
  
  关于CSS透明度,有一点需要注意的是,它虽然使用了很多年,但它一直以来都不是一个标准属性。它是一种非标准技术,应该是CSS3规范的一部分。
  
  1.旧的Opacity设置
  
  以下代码是Firefox和Safari旧版本所需的透明度设置:
  
  #myElement{-khtml-opacity:.5;-moz-opacity:0.5;}-khtml-opacity设置是针对旧版本的Webkit渲染引擎,这种专用属性现在已经过时了,除非你还有需要兼容Safari1.x.的用户。
  
  第二行使用专用属性-moz-opacity是为了兼容Mozilla渲染引擎的早期版本,以及追溯到NetscapeNavigator。Firefox0.9以后就不要求使用-moz-opacity属性,Firefox3.5(现在使用Gecko引擎)已经不在支持这个属性。
  
  2.在Firefox,Safari,Chrome和Opera下的CSS透明度
  
  以下代码是除了IE外的所有当前浏览器的最简单,最最新的不透明度设置的CSS语法:
  
  #myElement{opacity:.7;}上述语法将设置一个元素为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中的CSSopacity属性:
  
  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技术只支持部分新的浏览器(Firefox3+,Opera10.1+,Chrome2+,Safari3.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只影响背景颜色的透明度,仅此而已。
  
  我希望我能涉及主要的跨浏览器的CSS透明度代码。如果内容有错漏,欢迎随时评论指出,我将乐意作更正或补充。谢谢~

分享到:
本文"CSS透明度实现方法总结"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4