更新:
我刚刚读到 Sass 3.5.0 现在应该支持带有原生 CSS 函数的 CSS 自定义属性。我用 node-sass 试过这个,但 libsass 还不支持 Ruby Sass 3.5 的这个特性
对于原生 CSS 函数,我认为 sass 会用自己的实现替换它们,因为我必须在 Sass 中使用字符串插值来编译我的 css:
--Primary: #{"hsl(var(--P-h), var(--P-s), var(--P-l))"};
对于 Sass 函数,我想出的最接近亮度的纯 CSS(显然不适用于 IE)是将颜色值分离为色调、饱和度和亮度,以便在 hsl() 中使用。这也可以与 rgba() 一起使用,但 hsl() 可用于更轻松地控制应用程序主题的阴影:
:root {
--P-h: 203;
--P-s: 82%;
--P-l: 41%;
--Primary: hsl(var(--P-h), var(--P-s), var(--P-l));
}
然后,活动、悬停、重音等的阴影可以通过使用 calc 计算原始亮度的百分比来使用改变的亮度:
:root {
--Primary-20: hsl(var(--P-h), var(--P-s), calc(var(--P-l) * 0.8));
}
这也可以以另一种方式减轻,但这不适用于每种情况。它也很混乱,最终会在变量范围内造成一些污染。