css rgba/hsla知识点讲解及半透明边框
一、RGBA(R,G,B,A)
参数:
R:红色值。正整数 | |百分数G:绿色值。正整数 | |百分数B:蓝色值。正整数 | |百分数A:Alpha透明度。取值0~1之间。
说明:此色彩模式与RGB相同,只是在RGB模式上新增了Alpha透明度。
RGBA 颜色值得到以下浏览器的支持:IE9+、Firefox 3+、Chrome、Safari 以及 Opera 10+。
二、HSLA(h,s,l,a)
HSL 指的是 hue(色调)、saturation(饱和度)、lightness(亮度),它表示颜色柱面坐标表示法。
HSL 颜色值是这样规定的:hsl(hue, saturation, lightness)。
Hue 是色盘上的度数(从 0 到 360) - 0 (或 360) 是红色,120 是绿色,240 是蓝色。
Saturation 是百分比值;0% 意味着灰色,而 100% 是全彩。
Lightness 同样是百分比值;0% 是黑色,100% 是白色。
HSLA 颜色值是 HSL 颜色值的扩展,带有一个 alpha 通道 - 它规定了对象的不透明度。
HSLA 颜色值是这样规定的:hsla(hue, saturation, lightness, alpha),其中的 alpha 参数定义不透明度。alpha 参数是介于 0.0(完全透明)与 1.0(完全不透明)的数字。
HSLA 颜色值得到以下浏览器的支持:IE9+、Firefox 3+、Chrome、Safari 以及 Opera 10+。
小应用:半透明边框
给一个容器加一个白色背景和一道半透明的白色边框:
起初,我是这样写的:
div{ border:10px solid hsla(0,0%,100%,.5); background:white; } body{background:pink}
发现问题:
半透明边框不起作用:
怎么回事?后来查询资料:
其实边框是存在的,只不过这个容器的自己的白色背景,透过了白色边框;而不是body元素的背景透过白色边框(这是才是我们想要的效果),所以实际上看到的效果跟纯白实色的边框完全一样。
解决方案:
在css 2.1中,这就是背景的工作原理,我们只能接受且向前看。幸运的是,我们可以通过,background-clip属性来调整上述默认行为带来的困惑。
background-clip
默认的值是 border-box 它表示背景会被元素的border box(边框的外沿框)裁切掉。如不想背景侵入到边框所在的领地,则可以用它的另一个值padding-box。
这样,浏览器就会用内边距的外沿把背景裁切掉。
div{ border:10px solid hsla(0,0%,100%,.5); background:white; background-clp:padding-box; } body{background:pink}
look OK~