假设我已经解析了我的mixin参数,并且使用rgba
函数提供了颜色。
现在我想混合其中两种颜色,但是LESS mix
函数需要color
类型的参数实例。
......并且不起作用
color("rgba(0,0,0,.5)")
mix(@first, ~"@{second}")
其中@second
是一个类似rgba(0,0,0,0.5)
如何转换为彩色?
答案 0 :(得分:2)
我担心你在LESS中找不到内置功能。</ p>
color()
函数参数需要是十六进制或其简写表示。
但您可以进一步使用javascript 解析字符串
rgba()
函数以获取类型变量
颜色。您可以在原始解析中执行第一步。 如果您需要在LESS中完成所有操作,您可以执行以下操作:
@color1: "rgba(255, 255, 0, 0.5)";
@color2: ~`@{color1}.replace(/^(rgb|rgba)\(/,'[').replace(/\)$/,']').replace(/\s/g,'')`;
@color3: rgba(unit(`@{color2}[0]`),unit(`@{color2}[1]`),unit(`@{color2}[2]`),unit(`@{color2}[3]`));
不幸的是,字符串无法直接读入rgba()
或类似函数,因为它们需要多个参数。即使使用字符串转义(例如~
),输出也会形成为单个变量(~"a, b, c"
变为a, b, c
并充当css的单个输出字符串),因此我们需要获取每个值单独并将其传递给rgba()
函数的相应参数/变量。使用函数unit()
,我们将字符串转换为可以进一步使用的数字。
例如:
@color4: mix(red,@color3);
.test {
color: @color4;
}
导致 CSS :
.test{
color: rgba(255, 64, 0, 0.75);
}