cssWeb前端之路

CSS 中颜色的表示

2017-05-31  本文已影响48人  七月初七的柒

当我在已经忘记了还有 HSL 这么个东西,最近却又用上了它的时候,我觉得还是有必要写一点关于颜色的总结(不涉及 IE)

CSS 中的颜色是以光的三原色 红-RED,绿-GREEN,蓝-BLUE 为基础表示出来的。其表示方法大致可以分为 颜色名称RGBHEXHSL 四类

颜色名称

/* color: colorName */
p { color: red; }

这个没太多说的,就是用颜色的 英文名称 直接表示,名称具体对应的 HEX值 可以 参照页面

RGB

/* 
    color: rgb(red, green, blue)
    color: rgba(red, green, blue, alpha)    
*/
p {
    color: rgb(255, 255, 255);
    background-color: rgba(0, 0, 0, .5)
}

RGB 的 3 个参数分别对应 redgreenblue。它是红绿蓝三色在数值上的直观体现,取值范围为 0~255,也可以是 0%~100%,但要注意的是,数值和百分比不能混合使用,rgb(255, 0, 0 ) 换成百分比,需要写作 rgb(100%, 0%, 0%),否则属于无效属性。

RGBARGB 的基础上增加了 alpha 属性,用来设置透明度,取值范围为 0~1,请不要尝试使用百分比 :)

HEX

/* color: hex */
p { color: #ffb500; }

HEX 就是十六进制,这是页面开发中使用频率最高的颜色表示方法。它的值是由红绿蓝三色数值的十六进制数组合而成。这样说可能有点绕口,让我们把上面例子中的值拆分成 4 个部分:#ffb500

因此,HEX 与 RGB 相互转换的过程可以分解为

#ffb500 ←→ rgb(ff, b5, 00) ←→ rgb(255, 181, 0)

而当 3 个十六进制数值的两位数都重复时(#ff0000),可以采用简写形式(#f00)。

HSL

/*
    color: hsl(hue, saturation, lightness)
    color: hsla(hue, saturation, lightness, alpha)
*/
p {
    color: hsl(0, 0%, 100%);
    background-color: hsla(0, 0%, 0%, .5)
}

HSL 对于我个人来说是不太好理解的(色彩基础弱鸡)。它有 3 个参数:

所以如果用 HSL 来表示红绿蓝三色,就是 red: hsl(0, 100%, 50%) green: hsl(120, 100%, 50%) blue: hsl(240, 100%, 50%)。当你需要随机产生一些比较鲜艳的颜色时,把 hue 单独作为变量是个不错的选择。

RGBA 一样,HSLA 也有一个 alpha 属性来调节透明度。

另外关于 HSLRGB 之间的转换,可以 参考页面

关于透明度

rgbhsl 有相应的 rgbahsla 来设置透明度,对于 颜色名称HEX 来说,就是使用 opacity,但是两者之间是有区别的。

opacity 是针对元素的透明度,p { opacity: .5 } 这样的设置会使元素整体透明,包括它的子元素。

alpha 是针对元素样式属性的透明度,p { background-color: rgba(0, 0, 0, .5) } 这样的设置只会使元素的背景色透明,并不会影响到其他属性(比如 color),也不会对子元素起效果。

其他

颜色对于前端来说其实是比较基础的东西,它的内容不多,但是不熟悉的话也会引起一些小麻烦。比如通过 element.style.color = '#f00' 将元素的字体设为红色,再想通过 #f00 来操作 DOM 是不能实现的,因为浏览器(非IE)会自动将 #f00 转换成 rgb(255, 0, 0) 之后再加入到元素的行间样式中 :)

上一篇 下一篇

猜你喜欢

热点阅读