美文网首页cssWeb前端之路
CSS 中颜色的表示

CSS 中颜色的表示

作者: 七月初七的柒 | 来源:发表于2017-05-31 18:15 被阅读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

  • 第 1 部分 # 相当于十六进制颜色的识别符,告诉浏览器后面跟上的是表示颜色的十六进制数
  • 第 2 部分 ffred 的十六进制数值,换算成十进制就是 15 * 16 + 15 = 255
  • 第 3 部分 b5green 的十六进制数值,换算成十进制就是 11 * 16 + 5 = 181
  • 第 4 部分 00blue 的十六进制数值,换算成十进制就是 0 * 16 + 0 = 0

因此,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 个参数:

  • H:Hue(色调)。取值范围为:0~360,0(或360)表示红色,120表示绿色,240表示蓝色。但实际上它是一个圆环的形式,因此当取值小于 0 或大于 360 时,这个值仍然是有效的
  • S:Saturation(饱和度)。取值为:0%~100%。这个值决定了颜色的鲜艳程度,当它为 100% 时,会将当前色调完全展示出来,而随着百分比的降低,颜色的鲜艳程度会降低,表现出来的视觉效果就是颜色逐渐变灰
  • L:Lightness(亮度)。取值为:0%~100%。这个值和饱和度不同,并不是越高表现力越强。假定给它设定一个标准值为 50%,那么它在这个标准值时,表现出来的色调是最正的。当它高于或者低于标准值时,就会像照相一样,曝光过度导致相片泛白,或者曝光不足导致相片发黑

所以如果用 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) 之后再加入到元素的行间样式中 :)

相关文章

  • CSS 中颜色的表示

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

  • css3总结

    css颜色表示方式: css3新增颜色表示方式 css1&css2的颜色方式: color name--颜色名称方...

  • CSS3常用归纳总结2

    CSS颜色,文本字体 CSS颜色表示法 1.颜色名表示,比如:red 红色,gold 金色 2.16进制数值表示,...

  • CSS颜色表示方法

    纯英文单词(transparent为透明色); 颜色代码:rgb(red,green,blue),每一个值由两位十...

  • 2019-12-21字体、颜色

    设置字体颜色: 使用color来设置文字的颜色css颜色表示法"1、颜色名表示,比如:red 红色,gold 金色...

  • CSS--background系列属性

    1. background-color属性 css2.1中,颜色的表示方法有三种:(1)单词;(2)rgb表示法(...

  • css颜色单位表示法

    所有的颜色都可以由红、绿、蓝三原色调配而成。 CSS中用8位表示一个颜色,那么可以有28即256种颜色,所以总共...

  • css第二节第2天

    1.CSS的颜色表示 命名颜色 red、black、white、purple、green、yellow、silve...

  • css关于文本字体的补充

    * 颜色单位: * 在CSS可以直接使用颜色的单词来表示不同的颜色 * 红色:red * 蓝色:blu...

  • 颜色的单位

    颜色单位:* 在CSS可以直接使用颜色的单词来表示不同的颜色* 红色:red 蓝色:blue 绿色...

网友评论

    本文标题:CSS 中颜色的表示

    本文链接:https://www.haomeiwen.com/subject/fmyjfxtx.html