`
edison87915
  • 浏览: 200063 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

CSS3 RGBA(转)

    博客分类:
  • CSS3
 
阅读更多

 

CSS3 RGBA原文

 

前面我们一起探讨了一下CSS3 Gradient(css3 渐变),今天我们一起来探讨一下CSS3中的RGBA。RGB对于大家来说一点不陌生,他就是红色R+绿色G+蓝色B,那现在我们所说的RGBA又是什么呢?说得简单一点就是在RGB的基础上加进了一个通道Alpha。从而形成了我们今天需要讨论的RGBA。如果需要更详细的解说,大家就跟着我一起往下看吧。

语法:

R:红色值。正整数 | 百分数

G:绿色值。正整数 | 百分数

B:蓝色值。正整数| 百分数

A:透明度。取值0~1之间

取值:

<length> :Hue(色调)。 0(或360)表示红色,120表示绿色,240表示蓝色,当然可取其他数值来确定其它颜色;

<percentage> :Saturation(饱和度)。 取值为0%到100%之间的值;

<percentage> :Lightness(亮度)。 取值为0%到100%之间的值;

<opacity> :alpha(透明度)。 取值在0到1之间;

说明:

RGB 色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得 到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

RGBA 在RGB的基础上多了控制alpha透明度的参数。以上R、G、B三个参数,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0% - 100.0%。超出范围的数值将被截至其最接近的取值极限。并非所有浏览器都支持使用百分数值。A参数,取值在0~1之间,不可为负值。

 

浏览器的兼容性:



 

如果庞统说rgba是制作透明色(透明背景色、透明边框色、透明前景色等),大家不由会想起opacity 这个东西。他在我们CSS2中制作背景色通常用到,可是要用他来制作边框色或都说前景色的话,那他就只能在边上站着了,有心无力呀。

现在我们先来看一个rgba和opacity的对比实例

 

 

<div class="example-opacity">
  <p>Opacity效果</p>
  <ul>
   <li class="opacity opacity1">100%</li>
   <li class="opacity opacity2">80%</li>
   <li class="opacity opacity3">60%</li>
   <li class="opacity opacity4">40%</li>
   <li class="opacity opacity5">20%</li>
   <li class="opacity opacity6">0</li>
  </ul>
  <p>CSS3的RGBA效果</p>
  <ul>
   <li class="rgba rgba1">1</li>
   <li class="rgba rgba2">0.8</li>
   <li class="rgba rgba3">0.6</li>
   <li class="rgba rgba4">0.4</li>
   <li class="rgba rgba5">0.2</li>
   <li class="rgba rgba6">0</li>
 </ul>
</div>

 

 

我们分别给这两上ul中的li应用相关样式, 在li.opacity中我用使用CSS2中的opacity而在li.rgba中我们使用CSS3的rgba新属性

Opacity样式

 

 

  li.opacity{
    float: left;
    width: 50px;
    height: 50px;
  }
  li.opacity1 {
     background: rgb(255,255,0);
     opacity: 1;
     filter:alpha(opaity=100);
  }
  li.opacity2 {
    background: rgb(255,255,0);
    opacity: 0.8;
    filter:alpha(opaity=80);
  }
  li.opacity3 {
    background: rgb(255,255,0);
    opacity: 0.6;
    filter:alpha(opaity=60);
  }
  li.opacity4 {
    background: rgb(255,255,0);
    opacity: 0.4;
    filter:alpha(opaity=40);
  }
  li.opacity5 {
    background: rgb(255,255,0);
    opacity: 0.2;
    filter:alpha(opaity=20);
  }
  li.opacity6 {
    background: rgb(255,255,0);
    opacity: 0;
    filter:alpha(opaity=0);
  }

 

RGBA样式

 

  li.rgba {
    float: left;
    width: 50px;
    height: 50px;
  }
  li.rgba1 {
    background: rgba(255,255,0,1);
  }
  li.rgba2 {
    background: rgba(255,255,0,0.8);
  }
  li.rgba3 {
    background: rgba(255,255,0,0.6);
  }
  li.rgba4 {
    background: rgba(255,255,0,0.4);
  }
  li.rgba5 {
    background: rgba(255,255,0,0.2);
  }
  li.rgba6 {
    background: rgba(255,255,0,0);
  }

 

我们来看看其效果:



 

效果中我们可以看出,他们相同之处就是背景色完全是一样的,但区别就是一直让大家觉得头痛的问题,那就是opacity后代元素会随着一起具有透明 性,所以我们Opacity中的字随着透明值下降越来越看不清楚,而RGBA不具有这样的问题,但是其支持的浏览器中有一个占在大市场份额的IE不支持, 这也就是让我们需要去做兼容,(听到兼容二字大家是不是特烦,我也是的)希望IE早点能实现。

在CSS2中Opacity能实现透明,而且大多主流浏览器都支持,虽然IE下有点麻烦

/* IE5 - 7 */
filter: alpha(opacity=80); 
/* IE 8 */
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; 
/* Everyone else */
opacity: 0.8;

 

那为什么不使用opacity而要使用rgba呢

从我们上面的实例中我们也知道,RGBA比元素设置CSS的透明度更好,因为单独的颜色可以在不影响整个元素的透明度,他不会影响到元素其他的属性,比如说边框,字体同时也不会影响到其他元素的相关透明度。

在 RGBA还没有出世前,我们都是使用opacity来做透明,但这里存在一个问题,就是我们在父元素中使用了opacity,那么其垢代元素都会受其影 响,我想这个问题大家都有碰到过,为了解决这样的问题我们需要增加一个空的div来专门放置使用透明的背景,然后通过使用绝对定位来实现我们需要的结果。 为了更好的理解我们在这里来看一个使用opacity的实例。首先来看html

<div class="bg-box">
  <div class="bg">
    <div class="bg-content">
       <p>我是bg的后代元素,我不想我的前景有任何透明!怎么办?</p>
     </div>
  </div>
</div>

 

先给他们附上相应的样式

  .bg-box {
    width: 200px;
    height: 100px;
    border: 1px solid #ccc;
    background: red;
    position: relative;
  }
 .bg {
    background: black;
    opacity: 0.5;
    filter:alpha(opaity=50);
    width: 100%;
    height: 50px;
    position: absolute;
    bottom: 0;
    left: 0;
  }

  .bg p {
    padding: 5px 10px;
    color: white;
  }

 

效果:



 

从 效果中我们明显的看出,这里和我们前面那个例子一样,名叫bg的div中设置了opacity,造成其后代元素段落P的前景色也随着变了。如果需要解决这 样的问题,在不使用别的新技术下,也就是说坚持使用opacity.那么我们就需要添加一个空的层,在这个地方应用透明背景层首先来看看改变一下html 结构吧

 

<div class="bg-box">
  <div class="bg">  </div>
   <div class="bg-content">
      <p>我是bg的后代元素,我不想我的前景有任何透明!怎么办?</p>
    </div>           
</div>

 

现在我们需要提把bg-content和bg层重合起来,换句话说就是把透明背景层单独放在另外一个div,然后把内容层和背景层重叠。换而言之,我们需 要在bg这个div上设置透明色,而在bg-content这个div上放置内容,并且都使用定位,保证bg这个div在bg-content这个div 下面。具体看看其CSS的变化:

 

 .bg-box {
   width: 200px;
   height: 100px;
   border: 1px solid #ccc;
   background: red;
   position: relative;
 }
 .bg {
   background: black;
   opacity: 0.5;
   filter:alpha(opaity=50);
   width: 100%;
   height: 50px;
   position: absolute;
   bottom: 0;
   left: 0;
   z-index: 1;
  }
  .bg-content {
    width: 100%;
    height: 50px;
    position: absolute;
    bottom: 0;
    left: 0;
    z-index: 10;
  }
  .bg-content p {
     padding: 5px 10px;
     color: white;
  }

 

首先我们在html中把bg这个div分离出来了,让他和bg-content这个div变成兄弟关系,然后通过CSS把他们都定位在同一位置,只 是bg放在了bg-content的下面(z-index)控制,另外在bg的div上应用了透明。看看这样一来我们有什么变化,效果如下:



 

跟没有处理之前相比是不是完美多了。可是这样弄就是有一点麻烦,现在CSS3的RGBA完全可以帮大家解决这样的问题了,接着我们在看一个用RGBA制作的效果吧,看看他是不是完全一样的。

 

<div class="bg-box">
   <div class="bg-content">
      <p>我是bg的后代元素,我不想我的前景有任何透明!怎么办?</p>
    </div>           
</div>

 

我们只要在bg-content中应用一个background:rgba();就能有上面那种效果了,具体看看代码吧:

 

  .bg-box {
     width: 200px;
     height: 100px;
     border: 1px solid #ccc;
     background: red;
     position: relative;
  }
  .bg-content {
     width: 100%;
     height: 50px;
     position: absolute;
     bottom: 0;
     left: 0;
     background: rgba(0, 0, 0,0.5);
  }
  .bg-content p{
     padding: 5px 10px;
     color: white;
  }

 

效果:




从 效果的对比中我们可以明显的看出,和opacity做出的效果是完全一样的。但是这里有一个问题是我们讨厌的IE(除IE9以外)都不支持CSS3的 RGBA属性。那么这样我们在IE下不是什么都没有吗?回答是肯定的,虽然IE不支持但我们不能什么都不给他呀,这样一来我们就碰到一个新名词"fallback color", 它的意思是我给IE备份一个色,在不支持RGBA的情况下,我照样给他一个色,而对rgba支持的浏览器并不会带来影响,那我们一起看看这个 fallback color怎么用吧。其实很简单,我们可以给其制作一张图片或都只给其加一个色,我们这些就只加一个色吧拿前面的实例来说吧,我们只要把bg- content的样式换一下

 

  .bg-content {
     width: 100%;
     height: 50px;
     position: absolute;
     bottom: 0;
     left: 0;
     background: rgb(0,0,0); /*The Fallback color*/
     background: rgba(0, 0, 0,0.5);
     -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000,endColorstr=#80000000)"; /*Filter for IE8 */    
     filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000, endColorstr=#80000000); /*Filter for older IEs */
   }

 

这里需要注意的是startColorStr和endColorStr的值#80000000,其中前两位是十六进制的透明度80,也就是透明值为 0.5而后面六位是十六进制的颜色#000000(black黑色)。如果你和我一样不知道怎么转换这个值,你可以采用下面这个工具:

CSS背景颜色属性值转换 有关于这个工具的使用大家可以点击志哥的《使用IE过渡滤镜和CSS3中的RGBA属性完成背景色透明效果

关于RGBA-IE-FALLBACK更多的知识可点击这里进入.

综合上面的所述,我们规纳一个RGBA在实际应用中的模式

 

.rgba {
  background: rgb(0,0,0); /*The Fallback color,这里也可以使用一张图片来代替*/
  background: rgba(0, 0, 0,0.5);
  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000,endColorstr=#80000000)"; /*Filter for IE8 */    
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000, endColorstr=#80000000); /*Filter for older IEs */
 }

 

上面代码中的颜色值可以根据自己的需求修改,此处只是一个代表性的值。

我们前面简单的带过一句,我们rgba不单可以应用在background上,我们还可以应用在只要设置了颜色的地方都可以使用,我在这里简单的说一下几种:

 

第一种:前景色color

 

  <p class="norgba-color">用rgba改变我的字体颜色</p>
  <p class="rgba-color">用rgba改变我的字体颜色</p>

 

.norgba-color {
  color: rgb(255, 0, 0);
}  
.rgba-color {
  color: rgb(255, 0, 0);
  color: rgba(255, 0, 0,0.5);
}

 

效果:



 

第二种边框色border-color

 

<p class="norgba-border-color">用rgba改变我的边框颜色</p>
<p class="rgba-border-color">用rgba改变我的边框颜色</p>

 

.norgba-border-color {
   border:5px solid rgb(255,0,0);
   width: 200px;
}  
.rgba-border-color {
   border:5px solid rgb(255,0,0);
   border:5px solid rgba(255,0,0,0.5);
   width: 200px;
}

 

效果:



 

第三种:字体的阴影色text-shadow

 

 <p class="norgba-text-shadow">用rgba改变我的字体阴影颜色</p>
 <p class="rgba-text-shadow">用rgba改变我的字体阴影颜色</p>

 

 .norgba-text-shadow {
   text-shadow : 0 2px 1px rgb(255,0,0);
 }
 .rgba-text-shadow {
   text-shadow : 0 2px 1px rgb(255,0,0);
   text-shadow : 0 2px 1px rgba(255,0,0,0.3);
 }

 

效果:



 

第四种改变边框阴影色

 

 <p class="norgba-box-shadow">用rgba改变我的边框阴影颜色</p>
 <p class="rgba-box-shadow">用rgba改变我的边框阴影颜色</p>

 

  .norgba-box-shadow {
     border: 5px solid green;
     width: 200px;
     -webkit-box-shadow: 0 2px 2px rgb(255,0,0);
     -moz-box-shadow: 0 2px 2px rgb(255,0,0);
     box-shadow: 0 2px 2px rgb(255,0,0);
  }
  .rgba-box-shadow {
     border: 5px solid green;
     width: 200px;
     -webkit-box-shadow: 0 2px 2px rgba(255,0,0,0.6);
     -moz-box-shadow: 0 2px 2px rgba(255,0,0,0.6);
     box-shadow: 0 2px 2px rgba(255,0,0,0.6);
  }

 

效果:



 

最后一种就是渐变颜色,关于这个我就不在多说了,因为我们前面的CSS Gradient有说过个例子,感兴趣的朋友可以到这里去看看。

这 里需要告诉大家的一点,这几种使用rgba的方法,目前只有在支持RGBA属性的浏览器才能正常显示,如果需要使用的朋友,请考虑这方面的显示差别。那么 到这里关于CSS3的RGBA我就介绍完了,希望能给大家的学习带来一定的帮助,更希望志同道合的朋友一起探讨一起学习一起进步。

  • 大小: 21.9 KB
  • 大小: 20 KB
  • 大小: 13 KB
  • 大小: 13.1 KB
  • 大小: 10.3 KB
  • 大小: 11.3 KB
  • 大小: 16.4 KB
  • 大小: 13.9 KB
分享到:
评论

相关推荐

    hex-to-rgba:将CSS十六进制颜色代码转换为rgba()

    hex-to-rgba将老式CSS十六进制颜色值字符串转换为rgba()字符串。 (可选)传入一个alpha值。 传递的alpha值将覆盖4或8位十六进制的任何alpha值。 如果您根本不输入任何Alpha值,我们将默认使用Alpha值1(完全...

    CSS3漂亮旋转菜单网页特效

    **CSS3漂亮旋转菜单网页特效详解** 在网页设计中,菜单是用户与网站交互的重要元素之一,它提供了网站导航的功能。随着技术的发展,CSS3(层叠样式表第三版)为菜单设计带来了丰富的可能性,包括动态效果、过渡、...

    CSS3风水罗盘旋转特效无水印版

    CSS3的opacity属性可以调整元素的不透明度,而RGBA颜色则允许我们在设置颜色的同时控制透明度,达到渐变和混合的效果。 7. **Responsive Design(响应式设计)**:考虑到罗盘可能在不同尺寸的设备上展示,使用媒体...

    postcss-hexrgba:PostCSS插件,将速记十六进制方法添加到rgba()值

    PostCSS HexRGBA 插件,将速记十六进制方法添加到rgba()值。 输入. foo { color : rgba ( # 0fab53 , 0.8 )}. bar { background : linear-gradient ( rgba ( # fff , .1 ) , rgba ( # fff , .2 ));} 输出. foo { ...

    CSS3的RGBA中关于整数和百分比值的转换

    在CSS3中,RGBA(Red, Green, Blue, Alpha)颜色模式是一种扩展了RGB颜色模型的方式,它添加了一个透明度通道,即Alpha值。RGB模式使用三个整数(0-255)来表示红、绿、蓝三种颜色的强度,而RGBA则增加了0-1之间的...

    CSS3特效-CSS3实现烟花特效

    在本文中,我们将深入探讨如何使用CSS3来创建引人入胜的烟花特效。CSS3是层叠样式表(Cascading Style Sheets)的第三版,它引入了许多新特性和功能,极大地扩展了网页设计的可能性,包括动画和特效。烟花特效就是...

    css3参考手册

    CSS3引入了RGBA颜色模式,允许指定颜色的透明度,还有HSL和HSLA模式,使颜色控制更为直观。`opacity`属性可以调整元素的整体透明度。 10. **变形与旋转** `transform`属性可以对元素进行位移、旋转、缩放和倾斜...

    css+html+css颜色对照表

    3. 一个详尽的CSS颜色对照表,列出各种颜色代码和其对应的色值。 通过学习这个压缩包中的内容,开发者不仅可以掌握CSS和HTML的基础知识,还能了解到如何有效利用颜色来增强网页的视觉效果,提高用户体验。这是一份...

    css3 3d翻转制作鼠标悬停图片3d翻转效果

    在现代网页设计中,CSS3已经成为了不可或缺的一部分,它提供了许多强大的功能,其中之一就是3D翻转效果。本文将深入探讨如何使用CSS3创建鼠标悬停时图片的3D翻转效果,以此来提升用户体验和视觉吸引力。 首先,我们...

    纯css3 transform旋转属性创建立体纹理文字特效

    在本文中,我们将深入探讨如何使用CSS3的`transform`属性中的旋转功能来创建立体纹理文字特效。CSS3是 Cascading Style Sheets(层叠样式表)的第三个主要版本,它引入了许多新特性,大大增强了网页设计的灵活性和...

    css3系列教程(RGBA).rar

    在CSS3中,RGBA(Red, Green, Blue, Alpha)是一种色彩模式,它扩展了传统的RGB(Red, Green, Blue)色彩模型,引入了Alpha通道来控制颜色的透明度。这个创新为网页设计师提供了更丰富的视觉效果和精细的控制力,...

    CSS3 RGBA色彩模式使用实例讲解

    在CSS3中,RGBA色彩模式是一种非常实用的特性,它扩展了传统的RGB(红、绿、蓝)颜色模型,增加了alpha通道,用于控制颜色的透明度。RGB模式使用三个颜色通道来混合出各种颜色,而RGBA则添加了一个额外的通道——...

    CSS3之学习必备书籍《CSS3 实战》

    2. **颜色和背景**:CSS3允许使用更多的颜色模式,如RGBa、HSLa和渐变(线性渐变和径向渐变),以及背景图像的重复、裁剪和定位等新特性,为网页带来丰富的视觉效果。 3. **边框和边框-radius**:CSS3的圆角边框(`...

    css3样例大全

    2. **边框与背景**:CSS3允许创建圆角边框(`border-radius`),透明边框(`border-color`与`rgba()`),以及多个背景图像(`background-image`)的叠加。 3. **阴影与渐变**:`box-shadow`和`text-shadow`属性为...

    css3实现的简单翻牌效果

    在CSS3中实现的简单翻牌效果是一种常见的网页动态效果,它可以用于制作各种互动式的卡片、游戏或信息展示。这个效果通常用在需要展现事物的两面性,比如正面和反面,或者隐藏和显示信息的场景。接下来,我们将详细...

    CSS3视频教程 1 CSS3介绍

    **CSS3视频教程 1 CSS3介绍** 在深入学习CSS3之前,首先我们需要理解什么是CSS。CSS,全称层叠样式表(Cascading Style Sheets),是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式的语言。自1996年...

    css3教程基础知识圆角,阴影,渐变,阴影,旋转

    在IT行业中,CSS3是网页设计与开发的重要组成部分,它为网页样式提供了更丰富的功能和表现力。本教程将深入探讨CSS3中的基础知识,特别是圆角、阴影、渐变、阴影和旋转等特效,帮助你提升网页设计的美观度和交互体验...

    纯css3 transform文字变形3D阴影效果代码

    在IT行业中,CSS3是 Cascading Style Sheets 的第三版,是一种用于描述网页及应用程序界面外观和表现的样式语言。在本主题中,我们将深入探讨如何使用CSS3的`transform`属性来实现文字的3D变形和阴影效果。`...

Global site tag (gtag.js) - Google Analytics