首页 web前端 css教程 CSS3中使用RGBa来调节透明度的示例说明

CSS3中使用RGBa来调节透明度的示例说明

Mar 20, 2017 am 10:45 AM
css3 透明度

这篇文章主要介绍了CSS3中使用RGBa来调节透明度的教程,RGBA是RGB色彩模型的一个扩展,这个缩写词代表红绿蓝三原色的首字母,Alpha值代表颜色的透明度或者说不透明度,需要的朋友可以参考下

在 CSS3 中,增加了一个 opacity 属性,允许开发者设置元素的透明度,现在 opacity 已被主流的现代浏览器支持,但 opacity 会把被设置的元素及其子元素同时设置为同一个透明度,这样的透明规则相当不灵活,在实际开发中往往也是会遇到很多麻烦。其实,在 CSS3 中还有另外一套颜色透明解决方案 —— RGBa 。相对于 opacity ,RGBa 可以在单个元素上设置透明度,而不影响其子元素,只是 RGBa 的浏览器支持度并没有 opacity 的广泛,因此相对较少引起开发者注意。

RGBA(R,G,B,A)
取值:
R:红色值。正整数 | 百分数
G:绿色值。正整数 | 百分数
B:蓝色值。正整数 | 百分数
A:Alpha透明度。取值0~1之间。
下面是用rgba() 设置50%透明度的白色.

p {   
color: rgba(255, 255, 255, 0.5);   
}
登录后复制

RGBA是RGB色彩模型的一个扩展。这个缩写词代表红绿蓝三原色的首字母,Alpha值代表颜色的透明度/不透明度。

下面开始详细介绍 RGBa 颜色。

一. RGBa 颜色基础
RGBa 在本质上看也是为设置的元素增加了一个 alpha 通道,即在红色、绿色、蓝色三种颜色通道之外增加一个代表透明度的通道,其中 RGB 值使用我们熟悉的用3个 0 到 255 的整数分别表示红色、绿色、蓝色,而 alpha 取值则为 0 到 1 (小数位一位)。下面例举一个例子说明其具体的使用方式:

在 CSS 2.1 中,支持使用 RGB 色彩声明(尽管开发者可能更加习惯使用如:#343434 的 16 进制表示方式),例如要为 id 为 example 的 p 元素设置背景色 #343434 ,可以这样写

/* RGB 表示方式 */
#example {background: rgb(52, 52, 52); }
登录后复制

接下来再使用 RGBa ,把例子中的背景颜色修改成带 0.5 透明度。

/* 设置 0.5 透明度 */
#example-a {background: rgba(52, 52, 52, 0.5); }   
/* 也可以省略小数点前的 0 */
#example-a {background: rgba(52, 52, 52, .5); }
登录后复制

增加透明度前后效果如下(为了更明显的反映透明度带来的效果,例子中的 body 增加了背景纹理):
CSS3中使用RGBa来调节透明度的示例说明

可以看出,RGBa 只是在原有的 RGB 的基础上增加一个参数,这个改动虽小,却为开发者提供了很大的方便。

另外,RGBa 除了可以用在 background 属性外,还可以用在 color 和 border 属性(注:border 属性使用 RGBa 在 Firefox 中会与在其他浏览器中的效果略有不同)。

二. 浏览器支持与渐进增强
尽管 RGBa 已经在主流现代浏览器中获得了良好的支持,其中 Webkit 对 RGBa 的支持是最早的,Chrome 至少在 0.415 版本便开始支持 RGBa ,在这个方面 Chrome 可以说是非常给力的,另外 Gecko 和 Presto 内核也逐步实现了对 RGBa 的支持,IE 浏览器则从 IE9 开始才支持 RGBa 。更具体的浏览器支持情况如下:

Chrome 0.4.154.33+ , Firefox 3.0+ , Safari 3.2.1+ , Opera 10.10+ , IE9+

更加详细的浏览器支持情况请参考这里。

对于不支持 RGBa 的浏览器,这里可以采用渐进增强的方案解决,Kayo 推荐的是指定一个保留色的解决方案。首先,开发者必须知道,不支持 RGBa 的浏览器会把使用了 RGBa 的 CSS 属性值视为语法错误,因此不理会该 CSS 属性设置。因此,开发者可以在设置 RGBa 颜色之前首先设置一个不使用透明度的属性,避免当浏览器不支持 RGBa 时出现完全没有颜色的情况。下面对上例进行扩展说明:

#example1 {background: rgb(52, 52, 52); background: rgba(52, 52, 52, .5); }
不支持 RGBa 的浏览器会忽略第二个 background 属性设置,按照第一个属性值设置元素的背景色,这样虽然不能使浏览器之间的效果相同,但已经达到相似的效果了,并且体现了一种不错的渐进增强解决方案。

当然,对于 IE ,可以使用滤镜达到与支持 RGBa 浏览器中相同的效果,例如:针对以上例子,你可以如下地编写代码

<style type="text/css">   
    #example-a {background: rgba(52, 52, 52, .5); }   
</style>   
<!--[if IE]>   
    <style type="text/css">   
        #example-a {   
            background: transparent;   
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=&#39;#34343432&#39;, endColorstr=&#39;#34343432&#39;);   
            zoom: 1;   
        }    
    </style>   
<![endif]-->
登录后复制

这里需要注意,滤镜中使用的是上例中相同的颜色和透明度,只是使用 16 进制表示。

IE 会忽略 RGBa 颜色设置,并且根据 filter 滤镜设置颜色,这样的效果与 RGBa 的效果相同。

三. 不影响子元素
在文章的开头已经介绍过,RGBa 相对 opacity 的优势是不会影响其子元素,即可以单独为被设置的元素设置透明度,而子元素而不受该设置影响。下面再例举一个具体的例子,分别以 RGBa 和 opacity 为元素设置透明度说明两者的区别。

完整代码:

<!DOCTYPE HTML>   
<html lang="zh-CN">   
<head>   
    <meta charset="UTF-8">   
    <title>RGBa 与 opacity 效果的区别</title>   
    <style type="text/css">   
        body {padding-top: 200px; background: url(bg.png); }   
        #example, #example-a {width: 200px; height: 100px; margin: 0 auto; }   
        #example {background: rgb(52, 52, 52); opacity: 0.5; }   
        #example-a {margin-top: 20px; background: rgba(52, 52, 52, .5); }   
        .inside {display: block; width: 50px; height: 50px; margin-left: 10px; background: rgb(100, 140, 180); }   
    </style>   
</head>   
<body>   
    <p id="example">   

        <span class="inside"></span>   

    </p>   

    <p id="example-a">   

        <span class="inside"></span>   

    </p>   
</body>   
</html>
登录后复制

具体效果
CSS3中使用RGBa来调节透明度的示例说明

可以看出,opacity 会使其中的子元素 span 同时变为半透明的效果,而 RGBa 则只改变被设置的元素的透明度,而在大多数情况下,开发者只需要设置当前元素的透明度(如遮罩,半透明背景等),因此使用 RGBa 会更加的灵活。

另外,在 IE9 中,直接使用 RGBa 颜色与使用 opacity 设置透明的效果会有差异(读者可以在 IE9 下浏览 Demo 查看具体的效果),开发者需要注意这一点差异。

相关文章:

CSS设定一个元素半透明

CSS3教程(8):CSS3透明度指南

实现CSS3不透明度完整代码

以上是CSS3中使用RGBa来调节透明度的示例说明的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

纯CSS3怎么实现波浪效果?(代码示例) 纯CSS3怎么实现波浪效果?(代码示例) Jun 28, 2022 pm 01:39 PM

纯CSS3怎么实现波浪效果?本篇文章就来给大家介绍一下使用 SVG 和 CSS 动画制作波浪效果的方法,希望对大家有所帮助!

巧用CSS实现各种奇形怪状按钮(附代码) 巧用CSS实现各种奇形怪状按钮(附代码) Jul 19, 2022 am 11:28 AM

本篇文章带大家看看怎么使用 CSS 轻松实现高频出现的各类奇形怪状按钮,希望对大家有所帮助!

css怎么隐藏元素但不占空间 css怎么隐藏元素但不占空间 Jun 01, 2022 pm 07:15 PM

两种方法:1、利用display属性,只需给元素添加“display:none;”样式即可。2、利用position和top属性设置元素绝对定位来隐藏元素,只需给元素添加“position:absolute;top:-9999px;”样式。

css3怎么实现花边边框 css3怎么实现花边边框 Sep 16, 2022 pm 07:11 PM

在css中,可以利用border-image属性来实现花边边框。border-image属性可以使用图片来创建边框,即给边框加上背景图片,只需要将背景图片指定为花边样式即可;语法“border-image: url(图片路径) 向内偏移值 图像边界宽度 outset 是否重复;”。

原来利用纯CSS也能实现文字轮播与图片轮播! 原来利用纯CSS也能实现文字轮播与图片轮播! Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

css3如何实现鼠标点击图片放大 css3如何实现鼠标点击图片放大 Apr 25, 2022 pm 04:52 PM

实现方法:1、使用“:active”选择器选中鼠标点击图片的状态;2、使用transform属性和scale()函数实现图片放大效果,语法“img:active {transform: scale(x轴放大倍数,y轴放大倍数);}”。

教你win10任务栏设置透明度的方法 教你win10任务栏设置透明度的方法 Jul 10, 2023 pm 12:37 PM

win10系统有许多比较新颖的功能,有小伙伴想要让自己的win10系统更加具有个性化,因此想设置任务栏透明度看起来更加酷炫些。那么win10任务栏如何设置透明度呢?下面小编就教下大家win10任务栏设置透明度的方法。具体的方法如下:1、打开电脑,鼠标移动到任务栏,然后鼠标右键任务栏,在窗口找到“任务栏设置”并且点开。2、点开“任务栏设置”窗口后,找到“颜色”选项,点开,在“颜色”设置界面可以设置大家所喜欢的得任务栏颜色,大家可以选择Windows颜色也可以自定义颜色,选好颜色后找到下面的“透明效

css3怎么设置动画旋转速度 css3怎么设置动画旋转速度 Apr 28, 2022 pm 04:32 PM

在css3中,可以利用“animation-timing-function”属性设置动画旋转速度,该属性用于指定动画将如何完成一个周期,设置动画的速度曲线,语法为“元素{animation-timing-function:速度属性值;}”。

See all articles