`
java-admin
  • 浏览: 1386974 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

RGBA颜色与兼容性的半透明背景色

阅读更多

RGBA颜色与兼容性的半透明背景色

 

http://www.douban.com/group/topic/11634455/

 

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=839
简单说下RGBA颜色

所谓RGBA颜色,顾名思意就是R+G+B+A的颜色,再具体点就是RED+GREEN+BLUE+ALPHA的颜色,小写一下就是 red+green+blue+alpha的颜色,翻译一下就是红+绿+蓝+Alpha透明的颜色。

关于rgba的基础知识介绍,您可以参见这里:CSS3 RGBA colors使用参考指南

我们平时用的较多的是16进制颜色,例如黑色#000000;白色#FFFFFF,这些是16进制表示的颜色,如果使用RGB颜色表示就是 rgb(0, 0, 0)与rgb(255,255,255),其实本质上是一样的,只是一个是16进制表示的,一个是二进制表示的(RGB颜色)。

而RGBA颜色归为CSS3属性,其余RGB的区别在于多了个A,也就是Alpha透明度,这是个很好的东西啊,我们以后要实现半透明效果(无论是背景,边框,文字颜色等都可以用半透明实现了),但是,一向不紧不慢,孤芳自赏的IE家族,目前为止还不支持rgba颜色,真是让人哀叹啊!

您可以参见下面各个浏览器对rgba的支持情况一览表,这个表不是我做的,里面把浏览器的祖宗十八代都挖出来了,不得不佩服图表制作者,一些跟凤姐一样稀奇古怪的浏览器可以直接忽略掉:
浏览器、版本、平台 结果 后备
Firefox 3.6 (OS X) 作用 —
Firefox 3.0.5 (OS X) 作用 —
Firefox 3.0.5 (Windows XP, Vista) 作用 —
Firefox 2.0.0.18 (PC) 无作用 实色
Safari 4 (Developer Preview & 4.0.4, OS X) 作用 —
Safari 3.2.1 (OS X, Windows XP) 作用 —
Mobile Safari (iPhone) 作用 —
Opera 9.6.1 无作用 实色
Opera 10 Beta (Linux & Windows) 作用 —
Opera 10.10 (OS X) 作用 —
IE 4.01 无作用 没有颜色
IE 5.5 (PC via IETester) 无作用 没有颜色
IE 6 (PC via IETester) 无作用 实色
IE 7 无作用 实色
IE 8 (Beta 2 & release version) 无作用 实色
Google Chrome 0.4.154.33 (Windows XP) 作用 —
Google Chrome 1.0.154.46 (Windows XP) 作用 —
Google Chrome 4.0.249.49 (OS X) 作用 —
Netscape 4.8 (PC) 无作用 没有颜色
Navigator 9.0.0.5 Linus 无作用 实色
SeaMonkey 1.1.14 无作用 没有颜色
SeaMonkey 2.0 作用 —
Sunrise 1.7.5 作用 —
Stainless 0.2.5 作用 —
Flock 1.2.7 无作用 实色
Flock 2.0.2 作用 —
BlackBerry Storm Browser 作用 —
Camino 1.6.6 无作用 实色
Camino 2.0b1 作用 —
Iceape 1.1.14 (Linux) 无作用 实色
Kazehakase 0.5.2 (Linux) 无作用 实色
Avant 11.7 (Windows XP) 无作用 实色

对于rgba的使用,您可以参见下面的简单示例:

background:rgba(200, 54, 54, 0.5);

其中,表示半透明度的0.5前面的0是可以省掉的,直接.5也是可以的。

正如上表所展示的,IE8及其以下都对实用的rgba颜色不支持,怎么半呢?

其实细想一下,rgba颜色多了个什么东西呢,不就是半透明吗,IE不是由半透明滤镜嘛,我们只要使用:

filter:alpha(opacity=50);

不也很ok吗?

是吗?只要静下来一想,完全不是那么回事,IE半透明滤镜透明的是整个元素,它可以只透明元素的边框吗?它可以只透明文字的投影吗?都不行。

正所谓车到山前必有路,IE下某一属性是可以实现类似于rgba的效果的,那就是半透明背景。

三、IE下背景半透明的方案

实现IE下仅仅背景色的半透明没有什么玄乎的,就是IE滤镜,准确的讲是IE渐变滤镜。关于IE渐变滤镜,我曾在“CSS实现兼容性的渐变背景(gradient)效果”一文中有过一些介绍,但是不是很全。

这里可以稍微在补充下下:
此滤镜上半身特征是 FILTER:progid:DXImageTransform.Microsoft.Gradient
最简单的使用如下:

filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#AARRGGBB,endColorStr=i#AARRGGBB)

startColorStr:可选项。字符串(String)。设置或检索色彩渐变的开始颜色和透明度。
  其格式为 #AARRGGBB 。 AA 、 RR 、 GG 、 BB 为十六进制正整数。取值范围为 00 – FF 。 RR 指定红色值, GG 指定绿色值, BB 指定蓝色值,参阅 #RRGGBB 颜色单位。 AA 指定透明度。 00 是完全透明。 FF 是完全不透明。超出取值范围的值将被恢复为默认值。
  取值范围为 #FF000000 – #FFFFFFFF 。默认值为 #FF0000FF 。不透明蓝色。
EndColorStr:可选项。字符串(String)。设置或检索色彩渐变的结束颜色和透明度。参阅 startColorStr 属性。默认值为 #FF000000 。不透明黑色。

此滤镜还有诸如Enabled参数和GradientType参数,具体含义不是本文重点,掠过~~

我们关心的是这里的颜色表示,即#AARRGGBB,看到这里前面的两个AA字母没,这个AA不是指吃饭K歌的AA,而是指rgba中的那个a,也就是透明度的意思,只是与rgba不同的是,这里的AA是要用16进制表示的(非小数值),也就是从00~FF,00表示完全透明了,FF则相当于rgba中1,表示完全不透明实色一个。

好了,现在这个买卖好做了,就像虽然闫凤娇和阿娇长相差异很大,但是都是很清纯的女生,于是呢,我们就可以实现兼容性,实现统一了。
四、rgba+filter实现兼容性的半透明背景效果

参见如下的示例代码:

background:rgba(0,0,0,0.5); filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7F000000,endcolorstr=#7F000000);

上面代码所实现的效果是让所有主流浏览器下元素可以实现50%透明的黑色背景。类似下面的效果:
半透明的黑色效果 张鑫旭-鑫空间-鑫生活
本文作者:张鑫旭,来自张鑫旭-鑫空间-鑫生活
五、实际的应用

如果能够直接实现兼容性的背景色,那么很多事情就好办了。例如我们要实现兼容性的半透明边框,就不需要上下左右拼凑了,最好的例子莫过于 jQuery的boxy弹出层效果了。
中文汉化后的boxy插件的预览图 张鑫旭-鑫空间-鑫生活

看到上面的黑色的半透明边框没,由于兼容性的问题,这里的圆角黑色半透明边框是怎么实现的呢?是四角的图片+四边的opacity半透明拼接实现的,不可不谓消耗巨大。

其实,一切都可以很轻松的。应用本文所叙述的半透明背景色方法,加上一点渐进增强,我们来看看如果最高效的实现黑色半透明边框,如下代码:

.opacity_bg_box{
background:rgba(0,0,0,0.5);
-moz-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
filter:progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7F000000,endcolorstr=#7F000000);
padding:8px;
position:absolute;
top:20px;
}
.opacity_in_box{
border:1px solid #f0f3f9;
background:white;
font-size:0;
}

对于HTML代码如下:

<div class="opacity_bg_box">
<div class="opacity_in_box">
<img src="http://image.zhangxinxu.com/image/study/s/s256/mm13.jpg" />
</div>
</div>

结果如下图所示:
Firefox下半透明边框效果 张鑫旭-鑫空间-鑫生活
IE6下半透明边框效果 张鑫旭-鑫空间-鑫生活

您可以狠狠地点击这里:兼容性半透明背景色demo


六、结语

虽然IE滤镜这个东西尽量避免实现,但是在有些特殊情况下,权衡下来,此处的方法还是有一定的使用价值的。如果一切都是我做主,我可能就会让IE浏览器直接实色表示了,毕竟,主要的功能没有多大影响,其次,实色也是蛮好看的,权衡利弊,IE的表现稍逊一点反而是上佳选择,当然,这只是我个人的看法,每个人的经历,关注的领域,以及经验的不同会导致对问题看法的不同,您可能不认为如此。

分享到:
评论

相关推荐

    CSS3鼠标悬停图片半透明渐变颜色背景遮罩动画特效

    在这个案例中,我们可能会使用线性渐变作为遮罩的背景色,以实现从透明到半透明的颜色变化。 3. **伪类选择器(Pseudo-classes)**: CSS3的伪类选择器如`:hover`,可以帮助我们在元素获得特定状态(例如,鼠标悬停...

    Css如何实现背景色透明或半透明但内容不透明

    在网页设计中,有时我们希望元素的背景颜色呈现透明或...总的来说,通过合理利用CSS的`filter`滤镜和`rgba()`函数,我们可以轻松实现背景色透明或半透明但内容不透明的效果,从而提升网页设计的视觉层次感和用户体验。

    半透明按钮背景切换手机网站首页

    实现半透明按钮通常涉及到CSS(层叠样式表)的使用,通过调整`opacity`属性来控制按钮的透明度,或者使用`rgba()`函数指定颜色的同时设置透明度。此外,还可以利用CSS3的渐变效果,如线性渐变或径向渐变,创造出更加...

    css半透明效果

    例如,创建一个背景色为半透明红色的元素: ```css .element { background-color: rgba(255, 0, 0, 0.5); } ``` 这里的`rgba(255, 0, 0, 0.5)`中,`(255, 0, 0)`是红色的RGB值,`0.5`是透明度,0.5表示50%透明。 ...

    PHPWind 半透明模板

    在设计上,半透明模板通常会运用淡色或轻量级的颜色,通过不同程度的透明度,使得背景元素与前景内容相互融合,创造出层次感和深度。这种设计风格在网页设计中越来越受欢迎,因为它能够使网站看起来更轻盈,同时不...

    半透明邮件订阅模板是一款半透明背景风格的css网站正在建设邮件订阅模板下载。.zip

    此模板以其半透明背景为特点,为网站的订阅功能增添了时尚与现代感,同时增加了用户体验的互动性和视觉吸引力。 在CSS中,半透明效果通常通过设置`opacity`属性或使用`rgba()`函数来实现。`opacity`属性可以调整...

    css 背景半透明最佳实践

    在Web开发中,实现背景半透明效果是一种常见的需求,特别是在需要美观与交互性并存的设计中。这种效果不仅可以增加页面的美观度,还能提高用户体验。然而,在不同的浏览器环境下实现一致的半透明效果并不简单,尤其...

    CSS以及js半透明

    使用`opacity`属性时需要注意,该属性会影响到整个元素及其子元素的透明度,如果希望只改变背景色的透明度而不影响文字或其他子元素,可以考虑使用`rgba()`颜色模式或者`background-color`的`rgba`值来设置背景色。...

    半透明邮件订阅模板是一款半透明背景风格的css网站正在建设邮件订阅模板下载。_html网站模板_网页源码移动端前端_H.rar

    这款模板以其半透明背景为特点,能够为用户提供一个既美观又现代的界面,适用于各种类型的在线订阅服务,例如新闻通讯、博客更新或者产品促销信息。通过CSS(层叠样式表)技术,设计者可以精确控制元素的透明度,...

    CSS实现半透明效果

    在这个例子中,背景色被设置为半透明的白色,`rgba(255, 255, 255, 0.5)`中的最后一个参数0.5表示透明度。 另外,从CSS3开始,还引入了`filter`属性,可以实现更高级的透明效果,例如模糊(blur)、灰度(grayscale...

    css背景色透明 内容不透明的解决方法(兼容所有浏览器)

    为了实现背景透明,内容不透明,`.img_wrap`和`#bos ul li`设置了白色背景,而`&lt;h2&gt;`则使用了`rgba()`和`filter`相结合的方式,创建了一个半透明的黑色背景。这样,即使背景透明,标题文字依然清晰可见。 在实际...

    纯CSS实现背景半透明文字不透明效果兼容IE6

    此外,为了在IE6中更精确地控制文本的显示,我们还可以对文字的颜色值进行调整,确保其在半透明背景下依然清晰可见。在上述代码示例中,文字颜色已经设置为白色(#fff),在黑色背景上具有良好的对比度和可读性。 ...

    css3系列教程(RGBA).rar

    同时,教程可能还会讨论浏览器兼容性问题,因为尽管大多数现代浏览器都支持RGBA,但一些旧版本的浏览器可能需要使用备选方案,如使用PNG图像的透明度或JavaScript来实现类似效果。 "下载说明.txt"可能包含如何获取...

    wxh关于透明色问题

    4. **CSS3的透明背景**:通过`background-color: rgba()`可以实现背景颜色的透明效果。RGBA增加了Alpha通道,允许我们设置背景颜色的透明度,如`rgba(255, 0, 0, 0.5)`表示半透明的红色。 5. **SVG的透明度**:SVG...

    CSS3 透明色 RGBA使用介绍

    同时,随着现代浏览器对RGBA的支持,这也为网页设计师提供了更为丰富的颜色设计可能性,使其无需担心因浏览器兼容性问题而导致的设计效果不佳。因此,在进行网页设计时,推荐优先考虑使用RGBA来实现透明效果,除非...

    ReactNative的颜色组件

    1. 颜色常量:库通常会提供一套常见的颜色常量,如`'red'`、`'green'`、`'blue'`等,便于快速设置元素背景色或文本颜色。 2. 颜色转换:开发者可以将颜色从一种格式转换为另一种,例如从十六进制转换为RGB,或者从...

    CSS3设计颜色样式2.pdf

    第一个不透明,第二个使用Alpha通道仅改变背景色透明度,第三个同时改变背景色和文字颜色的透明度,第四个使用`opacity`属性整体调整元素的透明度。这展示了`opacity`属性影响的是元素整体,而Alpha通道可以对特定...

    让IE支持RGBa的背景色的代码

    在本文中,我们将探讨如何使用`filter`属性中的`DXImageTransform.Microsoft.gradient`滤镜来为IE实现类似`rgba()`的背景色效果。 首先,让我们回顾一下`rgba()`函数的语法: ```css background-color: rgba(R, G,...

    弹出层锁窗口 背景变灰 支持Firefox ie6 ie7 opera safari

    这个功能允许在用户与弹出层交互时,使页面背景变暗或者半透明,从而集中用户的注意力。以下将详细介绍实现这一功能的关键知识点。 1. 弹出层(Popup Layer): 弹出层是在网页上动态显示的独立内容区域,通常用于...

    颜色选择器包含透明度(https://www.html5tricks.com/download/jquery-color-picker.rar)

    通过使用这个插件,用户可以在选择颜色的同时调整其透明度(Alpha通道),从而创建半透明效果。这种透明度控制对于设计具有深度感和层次感的界面非常有用,例如,用于按钮、背景、图层等。 插件的核心功能可能包括...

Global site tag (gtag.js) - Google Analytics