CSS3 RGBA 属性高级用法

摘要:
然而,文本透明度会影响阅读。让我们使用RGBA属性分别设置H1的背景色。此外,如果与JavaScript结合,RGBA属性可以创建更耀眼的效果。这是为CSS3的RGBA属性准备的写入方法。使用rgb()指定颜色可以理解为rgba()不透明,但两者之间的差异很小,这将为将来升级到rgba(()带来极大的便利。与所有浏览器兼容虽然当前主流浏览器的最新版本已经支持RGBA属性,但我们也必须照顾使用旧浏览器的用户,因此在某些地方,使用旧方法会更安全。

这个属性的兼容问题比较简单,IE8已经支持这个属性,IE6和IE7也可以通过hack支持。RGBA和CSS2里的RBG属性差不多,只是RGBA属性多了一个透明度的定义,CSS3标准里对RGBA属性的解释如下:

1 2 3 4 5
/* 基本语法 */em { color: Rgba(red,green,blue,opacity) }/* 举例 */em { color: rgba(255,0,0,1) } /* 红色,不透明 */em { color: rgba(100%,0%,0%,1) } /* 同上 */

在现实中,使用三个1~255的十进制数值去定义一个颜色比用百分比更加准确,下面是几个颜色的RGB数值,大家在使用的时候只需要把00~FF的16进制数值换算成十进制就行了。

RGB颜色十进制数值


如何使用RGBA属性

RGBA的强大之处在于,通过对透明度的定义和不同层的颜色混合可以呈现出更多的颜色,就像颜料的混合一样。举一个例子,我们先为页面设置一个背景图片,接着为页面里的H1里的内容设置一个颜色,例如:

1 2 3 4
h1 {color: rgb(0, 0, 0);background-color: rgb(255, 255, 255);}

效果如下:
H1没有透明效果
这里可以看到H1并没有透明效果

但如果我没对H1设置一个整体的透明度(opacity属性)的话,效果会变成怎样呢?

1 2 3 4 5
h1 {color: rgb(0, 0, 0);background-color: rgb(255, 255, 255);opacity: 0.5;}

整个H1元素透明
在这里我们看到的效果是整个H1包括文字都呈现50%的透明度。可是文字透明是影响阅读的,我们用RGBA属性单独设置H1的背景色试试。

1 2 3 4
h1 {color: rgb(0, 0, 0);background-color: rgba(255, 255, 255, 0.5);}

RGBA单独设置H1元素背景
这是我们可以看到H1的背景成50%透明的白色,但里面的文字还是不透明的黑色。当然,你也可以只让H1里的文字透明。

1 2 3 4
h1 {color: rgba(0, 0, 0, 0.5);background-color: rgb(255, 255, 255);}

RGBA只让H1里的文字透明
只让文字透明,可以用来创建剪纸效果。

更多用法

在任何需要设置颜色的地方都可以使用RGBA,例如:

1 2 3 4 5
div {color: rgb(0, 0, 0);background-color: rgb(255, 255, 255);border: 10px solid rgba(255, 255, 255, 0.3);}

元素边界透明
为所有div设置透明度为30%线宽为10px的白色实线边界。

1 2 3 4 5 6 7 8
div {color: rgba(255, 255, 255, 0.8);background-color: rgba(142, 213, 87, 0.3);}div:hover {color: rgba(255, 255, 255, 1);background-color: rgba(142, 213,87, 0.6);}

鼠标滑过改变透明度
鼠标滑过改变透明度。

另外如果和JavaScript配合的话,RGBA属性可以创造出更加炫目的效果。


改变你的CSS编写习惯

在以上的例子中你可以看到作者一直在使用rgb()去指定颜色,而不使用传统的#xxx形式的十六进制表示方法。这是一个为CSS3的RGBA属性准备的写法,用rgb()指定颜色可以理解为rgba()不透明,但两者的差别非常小,这会对将来升级到rgba()带来很大的方便。


兼容所有浏览器

虽然目前主流浏览器的最新版本都已经支持RGBA属性,但我们还必须照顾使用旧版浏览器的用户,因此在某些地方我们用老方法会保险一些。方法也有好几种,大家按需选择。

1.低版本不使用RGBA属性

虽然这会影响在低版本浏览器里的效果,但这是最简单的方法,也是最保险的方法,具体操作如下:

1 2 3 4
h1 {color: rgb(127, 127, 127);color: rgba(0, 0, 0, 0.5);}

先设置rgb颜色在设置rgba颜色,这样不支持rgba属性的浏览器只会显示rgb颜色,而支持rgba的浏览器因为重定义的作用会显示rgba颜色。

2.使用透明的PNG图片做背景

PNG格式的优点在于图片里的透明特性可以在网页里呈现出来,这里就用到了这个特点。

1 2 3 4
h1 {background: transparent url(black50.png);background: rgba(0, 0, 0, 0.5) none;}

通过透明度为50%的PNG背景达到了和rgba一样的效果。

3.IE hack

对IE6和IE7可以用IE的私用属性来解决,可达到部分和rgba一样的效果。

1 2 3
h1 {filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr='#80000000', EndColorStr='#80000000');}

我们需要留意的是StartColorStr和EndColorStr的值,前两位是十六进制的透明度,后面六位是十六进制的颜色。

免责声明:文章转载自《CSS3 RGBA 属性高级用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android ANR详解【基础】查找元素篇(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SendMessage发送WM_COMMAND消息控制另一个程序的某一个按钮

procedure TfrmMain.btnSendClick(Sender: TObject); var hCalc, h1: Cardinal; begin WinExec('calc', SW_SHOWNORMAL);//运行计算器 hCalc := FindWindow('SciCalc', nil);...

echarts如何给柱形图的每个柱子设置不同颜色

总结下这几日用echarts库作基本图形遇到的一些问题。 echarts快速上手可参考官网: http://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts 在作柱形图时,如果需要给每个柱子设置不同颜色,参考以下说明: var option...

MeteoInfo-Java解析与绘图教程(四)

MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义配置 首先我们解析micaps数据,将之前学到的东西拿过来绘图 MeteoDataInfo meteoDataInfo = new MeteoDataInfo();meteoDataInfo.ope...

VS2010主题设置及插件推荐

本文主要写了个人使用 VS2010 的一些配置及实用插件,从而打造一个符合个人风格的开发环境。 基础设置 安装 Visual Assist X 在 VS2010 中若不安装 Visual Assist X 这个插件,直接开发 C++ 相关的项目将是非常痛苦的事情。默认环境没有对代码的不同部分进行颜色高亮显示,也没有任何的智能提示,在这种情况下想要准确写出...

颜色空间

颜色空间 摘自:http://blog.csdn.net/juyingmin/article/details/5689591  (注:做了一些完善工作) 1,CMY/CMYK颜色空间         青、品红、黄(CMY)(Cyan、Magenta、Yellow)彩色模型是彩色图象印刷行业使用的彩色空间,在彩色立方体中它们是红、绿、蓝的补色,称为减色基,而...

左式二叉堆

定义: 零路径长Npl(x):定义为从X到一个没有两个儿子的节点的最短路径长。 Npl(X) = min{ Npl(lchild), Npl(rchild) } + 1 (定义Npl(NULL) = -1,那么这个公式满足只有一个子节点的节点) 左式堆的性质:1、结构性质(对于堆中的任一节点,左儿子的零路径长至少与右儿子的零路径长一样大) 2、堆序性质:和...