css教程:关于CSS不透明的详细介绍

2016-02-20 00:30 6 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享css教程:关于CSS不透明的详细介绍,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/) 

  近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情。目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效。

  这篇汇总主要是提供一些CSS不透明的详细介绍,代码示例和解释,以实现这项有用的CSS技术在您的项目中兼容所有浏览器。

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

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

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透明度。对于IE6IE7需要注意:为了使得透明设置生效,元素必须是有布局。一个元素可以通过使用一些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的透明度

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  另一个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只影响背景颜色的透明度,仅此而已。

  我希望我能涉及主要的跨浏览器的CSS透明度代码。如果内容有错漏,欢迎随时评论指出,我将乐意作更正或补充。谢谢~

来源:http://www.tulaoshi.com/n/20160220/1631986.html

延伸阅读
标签: Web开发
个人总结了在开发css框架中的一点经验,献丑了。希望大家的讨论能使我们共同进步。:) 1、css框架 中国的互联网行业已经发展了10年,浏览器也从最早流行的NS到现在的FF3.IE7等等前端开发工程师的职位也诞生了。近几年在web开发中,有个非常火的词框架。YUI、JQuery、Prototype这些javascript框架在开发网站时,确实成为前端开发工程师的手中...
标签: Web开发
什么是浮动? 浮动是 css 的定位属性。我们可以看一下印刷设计来了解它的起源和作用。印刷布局中,文本可以按照需要围绕图片。一般把这种方式称为文本环绕。 这是一个例子: 在排版软件里面,存放文字的盒子可以被设置为允许图文混排,或者无视它。无视图文混排将会允许文字出现在图片的上面,就像它甚至不会在那里一样。这就是图片是否...
标签: PS PS教程
如下图,我们要做的就是上面半透明的一层(大且复杂的一个水印)去掉,还原底图的原貌。(注:下面图层的运算实际上是RGB值的运算) 这好比我们从一个地方走到另外一个地方,需要返回,最安全可靠的方法就是沿原路走回去。先看看我们是怎么走过来的!不透明度混合原理:覆盖图层以X%的不透明度和底图混合,得到的混合图等于覆盖图层乘...
标签: Web开发
译自:Quick Tip: Understanding CSS3 Gradients 中文:理解CSS3渐变 请尊重版权,转载请注明
在学习中遇到问题可以到 论坛 发贴交流! 本例为CSS入门系列教程,在这一课中我们将学习CSS的样式表,主要学习在学习css之前你应该掌握哪些基础知识,认识CSS以及如何使用CSS,希望能给对网页制作感兴趣的朋友带来帮助~~ CSS入门教程之关于CSS样式表 一.在学习css之前你应该掌握哪些基础知识 1.什么是网页,什么是超文本语言(html)...

经验教程

464

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部