@boltclock 说明了一切,但如果您的项目有 scss 预处理器,您可以节省一点时间。
你可以做一些调整来实现你想要的:
// Scss
@mixin defineColorRGB ($color, $red, $green, $blue) {
#{$color}: unquote("rgb(#{$red}, #{$green}, #{$blue})");
#{$color}-r: #{$red};
#{$color}-g: #{$green};
#{$color}-b: #{$blue};
}
然后在你的 css 中,你可以这样做:
::root {
@include defineColorRGB(--accentColor, red(#dfd0a5), green(#dfd0a5), blue(#dfd0a5));
}
您最终会得到 4 个不同的 css 变量,一个用于您的颜色,一个用于每个颜色通道。
然后你几乎可以像你写的那样使用它:
h1{
background: linear-gradient(
to right, rgba(255, 255, 255, 0),
rgba(var(--accent-color-r), var(--accent-color-g), var(--accent-color-b), 1)
);
}
我发现它是一种非常方便的方式来初始化我的 css 变量,并在我的大多数项目中使用它。