`
灵雨飘零
  • 浏览: 36646 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

【总结】CSS透明度大汇总

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

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

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

1. 旧的Opacity设置

  以下代码是Firefox和Safari旧版本所需的透明度设置:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->#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语法:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->#myElement { opacity: .7; }

  上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。

  opacity属性可以精确地小数点后两位,所以值取“.01”和“.02”实际上是不同的,虽然可见度很难被发觉。一般情况下,精确到一位就可以了,取值如“.3”或“.7”。

3. IE下的CSS透明度

  IE下照旧有别于其他浏览器,并且目前也有三个不同版本的IE在广泛使用,透明度设置是不同的,有时需要额外的CSS来控制:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->#myElement { filter: alpha(opacity=40); }

  上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6IE7需要注意:为了使得透明设置生效,元素必须是“有布局”一个元素可以通过使用一些CSS属性来使其被布局,有如widthposition。关于微软专有的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属性:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->document.getElementById("myElement").style.opacity = ".4";
// 针对所有现代浏览器 document.getElementById("myElement").style.filter =
  "alpha(opacity=40)";// 针对IE

  上面的代码可以使用行内循环或者其他动态函数递增修改透明度的值。当然,你必须先通过特征检测来决定使用哪一行代码。

5. 使用JQuery设置和改变CSS透明度

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

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->$("#myElement").css({ opacity: .4 }); // 所有浏览器有效

  您也可以使用一下jQuery代码使一个元素动画透明

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->$("#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通道的方式设定。语法如下:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->#rgba { background: rgba(98, 135, 167, .4); }

  在上面的定义中,通过RGB(前三个数字)给背景设定颜色,然后最后一个是alpha设置,以执行给定颜色的透明度。这个alpha设置跟opacity属性一样,可设定任何0到1的数字,精确得到两位小数点。数字值越大,就越接近完全不透明的颜色。

7. 通过 HSLA的透明度

  类似之前的定义,CSS3还允许使用HSLA单独设置颜色和alpha值,HSLA表示Hue(色调), Saturation(饱和度), Lightness(亮度), 和Alpha。以下是HSLA透明的例子:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->#hsla { background: hsla(207, 38%, 47%, .4); }

  更多关于HSLA颜色的解释,参考这篇来自W3.org的文章。如同RGBA透明度,最后的数字表示透明度设置,跟RGBA起同样的作用。注意RGBA和HSLA透明度的一个重要的好处是这些透明度设置不会影响到子元素的,但通过opacity属性的方式则会。alpha设置的RGBA和HSLA只影响背景颜色的透明度,仅此而已。

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

分享到:
评论

相关推荐

    CSS或HTML 颜色汇总

    - **RGBA**:在RGB基础上增加了透明度(alpha)通道,如`rgba(255, 0, 0, 0.5)`,透明度为50%。 - **HSL** 和 **HSLA**:用色相(角度)、饱和度(百分比)、亮度(百分比)表示,HSLA还包括透明度。 3. **颜色...

    html和css知识点总结.docx

    rgba 提供了透明度控制,十六进制和颜色名是常见的颜色表示方式,而 HSL 则方便调整色彩的色调和亮度。 文档流: 文档流是 HTML 元素在页面上默认的排列方式,块元素占据整行,行内元素则按照从左到右的顺序排列。...

    CSS知识点汇总.docx

    * 颜色单位:RGB(红绿蓝)、RGBA(红绿蓝透明)、HEX(十六进制)、HSL(色相饱和度亮度)、HSLA(色相饱和度亮度透明) 设置网站的图标 在 HTML 的标签中,可以使用标签来设置网站的图标。例如:,这样可以在...

    css和js的浏览器兼容问题汇总

    除此之外,还有许多其他兼容性问题,例如CSS中的盒模型、透明度、伪类选择器、CSS3属性等。例如,IE6使用自己的盒模型,而其他浏览器遵循W3C标准。为解决此问题,可以使用`box-sizing`属性来指定盒模型,或者使用...

    css浏览器兼容问题全面汇总

    - **PNG透明**:IE6 不支持PNG24位的透明,需要使用特定的技术如CSS透明度、AlphaImageLoader滤镜等来解决。 2. **Firefox浏览器兼容性问题**: - **Flexbox布局**:Firefox较早版本对Flexbox支持不完全,需要...

    3-html+css简答题.doc

    HTML+CSS基础知识点汇总 ...:可以使用opacity属性来设置CSS透明度。 43. 如何设置CSS自定义光标?:可以使用cursor属性来设置CSS自定义光标。 掌握了这些基础知识点,你就可以轻松地使用HTML+CSS来设计和开发网页了。

    CSS基础知识汇总(代码+知识点框图)

    - 透明度和RGBA颜色 - 多列布局(multi-column layout) - 字体图标(web fonts) - 异步加载(@import vs ) **8. CSS预处理器(Sass, Less)** CSS预处理器提供变量、嵌套规则、混合(mixins)等功能,使得CSS编写...

    CSS BUG浏览器兼容知识汇总

    4. **透明度兼容性** `opacity`属性在IE8及以下版本不支持,可以使用滤镜(`filter`)属性来实现IE的透明效果。 5. **渐变兼容** 不同浏览器对线性渐变和径向渐变的支持方式不同,需要使用相应的前缀来实现跨...

    css面试试题汇总.pdf

    10. FLASH与HTML的交互:提到了FLASH组件,如`&lt;param name="wmode" value="transparent"/&gt;`,这表明可以使用HTML来控制FLASH的透明度。同时提到了`position: absolute;`和`top: 50%; left: 50%;`这样的绝对定位代码...

    《CSS全程指南》随书光盘

    本书将最有用的CSS技术汇总在一起,在介绍基本的CSS概念和最佳实践之后,讨论了核心的CSS技术,例如图像、链接、列表操纵、表单设计等。每一章内容由浅入深,直到建立比较复杂的示例。之后本书又着重讨论如何使用DIV...

    div+css 解决ie6兼容问题总汇

    3. **PNG半透明图片**:IE6不支持PNG-24的透明效果,这可能导致透明度显示不正确。可以使用JavaScript库如DD_belatedPNG或CSS滤镜解决,但这些方法可能影响性能。最佳实践是在设计阶段尽量避免使用半透明PNG图片,转...

    前端CSS及其他知识点错题汇总_前端、面试_

    11. **CSS3新特性**:如阴影(box-shadow和text-shadow)、渐变(linear-gradient和radial-gradient)、透明度(opacity)、多列布局(column-count和column-gap)等。 12. **Flexbox布局**:掌握flex容器和flex...

    Introduction to Website Design and Development_ HTML5, CSS3, and JavaScript

    - 包括透明度的概念、实现方式及其应用场景。 - 提供代码示例,帮助实现复杂的视觉效果。 9. **第9章:CSS:样式表** - 介绍CSS的基本概念和语法。 - 包括选择器、规则集等基础知识。 - 学习如何使用CSS来控制...

    div+css布局中常用方法汇总.pdf

    《div+css布局中常用方法汇总》 在网页设计中,div+css布局是一种常见的页面构建方式,它能够实现灵活的网页布局,并提高网页的可维护性和可访问性。以下是一些div+css布局中常用的技术和技巧: 1. **文本框...

    html、css颜色码大全

    3. **RGBA 颜色码**:与 RGB 类似,但多了一个透明度值(alpha),范围从 0 到 1。 - 示例:`rgba(255, 0, 0, 0.5)` 表示半透明的红色。 4. **HSL 颜色码**:基于色调、饱和度和亮度三个维度来定义颜色。 - 示例:...

    DIV+CSS布局大全

    文档中还列举了多种CSS技巧,包括但不限于:文本阴影、圆角、透明度调整等,旨在提高页面美观性和交互性。 #### 九、Web打印实例教程 - **打印样式表** 针对打印输出定义专门的CSS样式表,以优化打印效果,减少...

    JavaScript通过改变文字透明度实现的文字闪烁效果实例

    本文主要讲解如何通过JavaScript改变文字的透明度来创建一种闪烁效果。这种效果通常用于吸引用户的注意力或者增强页面的视觉吸引力。 首先,我们来看看实现这个效果的关键CSS样式。这里使用了`filter`属性,并且...

    div+css布局中常用方法汇总.docx

    5. **透明度设置**:在不同浏览器中实现透明效果,可以使用`filter:alpha(opacity=50);`(IE)、`-moz-opacity:0.5;`(Firefox)和`opacity:0.5;`(其他现代浏览器)。 6. **IE列表高度显示问题**:针对IE6中的列表...

    CSS_Hack速查表

    "CSS_Hack速查表"是一个非常实用的工具,它汇总了各种CSS Hack,帮助开发者快速解决跨浏览器样式兼容问题。 一、什么是CSS Hack? CSS Hack通常分为三种类型:条件注释Hack、属性前缀Hack和选择器Hack。这些Hack...

    网页设计工具手册汇总

    此手册会介绍如何使用CSS滤镜对元素进行特效处理,如Alpha透明度、渐变过渡、阴影效果以及IE特有的滤镜属性。 此外,"Cos021105.chm"和"Comm2.0.CHM"可能分别涵盖了更广泛的网页设计或通信相关的主题,例如可能包含...

Global site tag (gtag.js) - Google Analytics