css颜色赋值的5种方式

502 阅读5分钟

css中的颜色,熟悉不能再熟悉的样式,但是这些我感觉你应该不知道,或者还不熟悉的。接下来我们看看,请仔细阅读,不要跳着看。

一、关于颜色、色彩

颜色百科

这个话题涉及的内容实在太多,对物理要求太高,这里说说大概的内容,颜色是怎么表示的,为什么这样来表示。

1665年,牛顿利用一块三棱镜把白光分成了红、橙、黄、绿、蓝、靛、紫七种颜色,发现了光的色散。也就是光不是无色的,他其实是复合颜色,用多种颜色合成而来。

后来不断推论与研究,既然白光能被分解及合成,那么这七种色光是否也可以被分解或合成。最后发现红、绿、蓝三种色光无法被分解,也就谈不上合成了,故称“三原色光”。(我查了资料说三原色最后的公开和验证不是牛顿做的,是后人在他基础上验证发现的。)

后来的后来发现我们可以使用三原色红、黄、蓝,混合在一起可以组成各种颜色的任意一种。也就是red green、blue ---> rgb

色彩的三个基本特性

1、色相(H)(Hue):是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。

2、饱和度(S)(Saturation)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。

3、明度(V)| 亮度(L)(light),取0-100%。

颜色透明度

通过查阅资料,网上观点也是很多,

1、自由电子阻挡作用程度,

2、吸收光线的物质程度

3、透明物质的结构破坏程度

总的来说,受电磁波的频率、自由电子之类的影响,从而实现透明度。太专业的词实在说不出来,尴尬...

总结一下

我们发现,影响颜色(色彩)的因素有很多,所以科学家们反其道而行之,通过对它的影响来达到不同的需求,我只是列举了后面会涉及到的影响因素。对于我们网页开发来说,科学家、大佬们都给我们准备好了影响它的工具和方法,直接使用即可。所以我们来看看提供给开发人员使用的方法,对色彩不同的影响会有怎样的一个反应(显示)(电磁波的频率),也及怎么使用。

以上说的都不太专业,轻点喷 [捂脸]。

二、rgb()| rgba()

rgb(0-255,0-255,0-255),为什么要这样,为什么它能达到我们想要的颜色的效果,其实从上面已经知道了,通过设置三原色,得到任何想要的颜色。只是说按照这个范围来设置。当超出范围时候,会自动设置为靠近它的值。也就是-1000 ---> 0 10000 ---> 255

rgba(0-255,0-255,0-255,0-1)。a -->Alpha,0是完全透明,1是不透明。

三、hsl() | hsla()

hsl(hue, saturation, lightness)

hue - 色相 定义色相 (0 到 360) - 0 (或 360) 为红色, 120 为绿色, 240 为蓝色

saturation - 饱和度 定义饱和度; 0% 为灰色, 100% 全色

lightness - 亮度 定义亮度 0% 为暗, 50% 为普通, 100% 为白

body{
  background-colorhsl(0100%50%);
}

hsla()和rgba()的a都是一样的,透明度。

hwb()

这个比较特殊,因为它又涉及了另一个知识点,色环。大概意思就是用一个圆环,将不同颜色按特殊的排列顺序组成的环,不同角度对应不同的颜色值。所以这个函数参与了角度问题。

hwb()函数符号根据其色调、白度和黑度来表示给定的颜色。一个可选的 alpha 分量表示颜色的透明度。

注意: HWB 函数不像以前的颜色函数那样使用逗号来分隔它的值,并且可选的 alpha 值需要在指定的情况下以正斜杠 ( /) 开头。

H(hue) 是CSS Color Module Level 4中s、s、s 或s 中给出的色环之一。当编写为无单位时,它被解释为度数,如CSS 颜色模块级别 3中所指定。根据定义,red=0deg=360deg,其他颜色围绕圆圈展开,因此 green=120deg、blue=240deg 等。作为一个,它隐式环绕使得 -120deg=240deg、480deg=120deg、-1turn= 1转等degradgradturn (number) (angle)

W(白度)指定要混合的白色量,以从 0%(无白度)到 100%(全白度)的百分比表示。

B(黑度)指定要混合的黑色量,范围为 0%(无黑度)到 100%(全黑度)。

A(alpha) 可以是介于0and1或 a ,其中数字1对应于100%(完全不透明度)。

body{
  background-colorhwb(0rad 20% 10% / 0.7);
}

总结: 上面介绍了一些特殊的方式,其实这些都是在css后面官方不断提出、新增的东西,也存在了很久了,就和js一样,每年都会有新的东西更新一样。通过上面的学习过程中,个人总结,遇到问题要自己多去思考,也就和去看一些框架的源码一样,得知道其中的来历,怎么用等等。仔细想想,这些东西能够在科学家验证之后,不断的验证、创新、应用、展现到大千人面前,这时我才感觉到了科学家们的贡献是如此的伟大,此刻我更想感谢他们,哈哈哈哈!!!!!再者就是官方提出的东西,肯定是有用的东西,所以我们得学习,这样才能实现别人实现不了功能、效果。走在最前面。