简述CSS透明技巧(总结)


本文总结CSS透明的一些技巧,提供一些CSS不透明的详细介绍及代码示例和解释,以实现该CSS技术在您的项目中兼容所有浏览器。

关于CSS 透明度,有一点需要注意的是,它虽然使用了很多年,但它一直以来都不是一个标准属性。它是一种非标准技术,应该是CSS3规范的一部分。

一、旧的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引擎)已经不在支持这个属性。

二、在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。关于微软专有的hasLayout属性详情,以及如何触发它,欢迎参考 52CSS.com相关文档。
另外一个设置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”的方法。

四、使用JavaScript设置和改变CSS透明度
您可以使用下面的语法访问JavaScript中的CSS opacity 属性:

document.getElementById(“myElement”).style.opacity = ”.4″;
// 针对所有现代浏览器  document.getElementById(“myElement”).style.filter =    ”alpha(opacity=40)”;
// 针对IE
上面的代码可以使用行内循环或者其他动态函数递增修改透明度的值。当然,你必须先通过特征检测来决定使用哪一行代码。

五、使用JQuery设置和改变CSS透明度
直接使用jQuery设置CSS透明度更直观更容易实现,因为在所有浏览器代码都一样,并且你不必担心在IE下元素是否“haslayout”:

$(“#myElement”).css({ opacity: .4 }); // 所有浏览器有效
您也可以使用一下jQuery代码使一个元素动画透明:
$(“#myElement”).animate({      opacity: .4      }, 1000, function() {
// 动画完成,所有浏览器下有效  });
不管元素的透明度在动画开始时是多少,它都会渐变到透明度为“.4”。动画的速度通过值“1000”设定,动画时间以毫秒为单位。代码中的最后一个属性是一个可选回调函数,将在动画完成后执行。
如果该元素的透明度在CSS中已经设定为“.4”,那在动画运行的时候,你将不会发觉有任何不同,所以动画开始和最终透明度要有所不同。

六、通过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的数字,精确得到两位小数点。数字值越大,就越接近完全不透明的颜色。

七、通过 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只影响 背景颜色的透明度,仅此而已



相关阅读:
Win7 安装软件时无法连接sql server解决方法
使用xmlHttp结合ASP实现网页的异步调用
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
JS 动态添加列表框项效果代码
高亮显示web页表格行的javascript代码
可以拖动的div 实现代码
Windows 2003系统网络负载均衡的实现
一个查看ASP的javascript程序
php将数据库导出成excel的方法
linux shell 常用脚本语句语法收集 推荐
利用jquery操作select下拉列表框的代码
UPDATE NOW!2000之快速DIY篇
display:inline的用法
php 缓存函数代码
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 感谢有您作文800字 你努力的样子,看起来还挺美 真正的爱情,是让自己成为更好的人 雨说·花季·花祭作文150字 己组词 高中高二作文900字:本 九月大学生的入党申请书 村委会发展老龄事业工作纪实 太阳能自划船的比赛 运动会上的稿件13篇 2017年健身计划表 小冬。 经典人生哲理大全 读《八荣八耻》有感作文400字 人与动物的友情就在我们身边作文600字 初中英语教师考核总结 沧海寂寞 中考满分作文100字:聊城 县综合整治土地保障科学发展实施方案 家庭教育误区,那些误导孩子一生的话 关爱留守儿童讲话材料 小学六年级作文750字:读《震不垮的四川娃子》有感 阴影,光明的影子 对乡镇干部化解农村社会矛盾能力的思考 XX县农业局农业科技入户工程实施方案 第一天实习日记 伤感诗意的唯美句子 出国祝福语 激励篇 学会感动650字 沦落就沦落 反正这也不算什么过错。 老鹰、小兔和小鸟 明月皎皎照心房作文800字 善良变成快乐作文650字 是真的长大了,还是我变了? 情人节祝福短信贫嘴篇 保姆聘用合同 大队委竞选演讲词 一场没有硝烟的较量 爱吃巧克力糖的查理 贫穷不是生活 美梦成真生日祝福语 五年级自我鉴定 岳阳楼随笔 段太尉逸事状随堂练习 隆冬情 杂曲歌辞。蓟门行五首 老师,我忘不了您 2013年党员自评总结 小学四年级作文400字:未 来 的 书 包 2016年派出所民警工作总结

Copyright © 2016 phpStudy |