HSL 值的 CSS 变量计算

问题描述

我想要一个基本的 HSL 颜色值,我想将其实现为渐变,如下所示:

:root {
    --hue: 201;
    --saturation: 31;
    --lightness: 40; 
    --mainColor: hsl(var(--hue),var(--saturation),var(--lightness));

    --difference: 20; /* 0 + --difference < --lightness < 100 - --difference */

    --lightnessPlus: calc(var(--lightness) + var(--difference));
    --colorFrom: hsl(var(--hue),var(--lightnessPlus));

    --lightnessMinus: calc(var(--lightness) - var(--difference));
    --colorTo: hsl(var(--hue),var(--lightnessMinus));
}

[...]
.class {
    background-image: linear-gradient(to right,var(--colorFrom),var(--colorTo));
}

上面的代码产生了一个透明的对象,我不明白为什么,请帮忙!

解决方法

您缺少百分比。语法应该是 hsl(h,s%,l%) (https://drafts.csswg.org/css-color-3/#hsl-color)

:root {
    --hue: 201;
    --saturation: 31%; /* here */
    --lightness: 40; 
    --mainColor: hsl(var(--hue),var(--saturation),var(--lightness));

    --difference: 20;

    --lightnessPlus: calc((var(--lightness) + var(--difference))*1%); /* here */
    --colorFrom: hsl(var(--hue),var(--lightnessPlus));

    --lightnessMinus: calc((var(--lightness) - var(--difference))*1%);  /* here */
    --colorTo: hsl(var(--hue),var(--lightnessMinus));
}

body {
    background-image: linear-gradient(to right,var(--colorFrom),var(--colorTo));
}

:root {
    --hue: 201;
    --saturation: 31%; /* here */
    --lightness: 40%; /* here */
    --mainColor: hsl(var(--hue),var(--lightness));

    --difference: 20%; /* here */

    --lightnessPlus: calc(var(--lightness) + var(--difference)); 
    --colorFrom: hsl(var(--hue),var(--lightnessPlus));

    --lightnessMinus: calc(var(--lightness) - var(--difference)); 
    --colorTo: hsl(var(--hue),var(--colorTo));
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...