CSS前景背景自动配色技术

410 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

先看看最终效果:

HSL颜色

关键字名词解释
HSL色彩模式就是色调(Hue)、饱和度(Saturation)、亮度(Lightness)三个颜色通道的改变以及它们相互之间的叠加来获得各种颜色。
HSL(H,S,L)取值H:Hue(色调),0(或360)表示红色,120表示绿色,240表示蓝色,也可取其他数值来指定颜色。取值为:0 - 360;S: Saturation(饱和度),取值为:0.0% - 100.0%;L:Lightness(亮度),取值为:0.0% - 100.0%。(HSL颜色的两个百分比值必须同时包含饱和度和亮度值才能正常显示)
兼容性HSL被现代浏览器较好的支持,而且不需要任何前缀,IE6-IE7不支持;IE8支持该方式。

hsl.png 从色盘的顶部开始顺时针方向旋转,0(或360度)表示红色,从60度开始,分别是:黄色、绿色、青色、蓝色、洋红和红色。

HSL饱和度值: hsl(45,x%,50%) image.png

HSL亮度值: hsl(90,100%,x%) image.png

CSS变量

CSS中原生的变量定义语法是:--*,变量使用语法是:var(--*),其中*表示我们的变量名称,不能包含$,[,^,(,%等字符,可以是中文,日文或者韩文, 可参考详情

实例要点解析

一、 CSS属性值范围溢出边界渲染特性:也就是说,css只要格式正确,超出范围也会渲染,而渲染的值就是合法边界值:

    .example1 {
      color: hsl(0, 0%, -100%);    /* 解析为 hsl(0, 0%, 0%), 黑色 */
    }
    .example2 {
      color: hsl(0, 0%, 200%);     /* 解析为 hsl(0, 0%, 100%), 白色 */
    }

二、var变量传递给calc实现复杂计算:目前市面上较受欢迎的两个亮度计算方案:

  1. sRGB Luma (ITU Rec. 709):L = (red * 0.2126 + green * 0.7152 + blue * 0.0722) / 255
  2. W3C method (working draft):L = (red * 0.299 + green * 0.587 + blue * 0.114) / 255

至此,更炫的配色方案就此诞生(PS,博主已经在项目中实践使用了哦😍)