Less 如何将逗号分隔的列表作为单个参数传递给mixin
我做了一个多站渐变混合,简单地为*-线性渐变的所有供应商前缀添加@参数。它是有效的,当我定义一个有很多止损点的梯度时,我很恼火,当使用mixin时,我必须把所有的东西放在一条线上,就像这样:Less 如何将逗号分隔的列表作为单个参数传递给mixin,less,Less,我做了一个多站渐变混合,简单地为*-线性渐变的所有供应商前缀添加@参数。它是有效的,当我定义一个有很多止损点的梯度时,我很恼火,当使用mixin时,我必须把所有的东西放在一条线上,就像这样: .gradientMultiple(~'top, rgba(255, 255, 255, 1) 0%, rgba(254, 254, 254, 1) 16%, rgba(252, 252, 252, 1) 36%, rgba(239, 239, 239, 1) 66%, rgba(18, 34, 106,
.gradientMultiple(~'top, rgba(255, 255, 255, 1) 0%, rgba(254, 254, 254, 1) 16%, rgba(252, 252, 252, 1) 36%, rgba(239, 239, 239, 1) 66%, rgba(18, 34, 106, 1) 66%, rgba(13, 31, 136, 1) 84%');
为了可读性,我想将函数参数放在多行上,但它会生成一个解析错误:
.gradientMultiple(~'top,
rgba(255, 255, 255, 1) 0%,
rgba(254, 254, 254, 1) 16%,
rgba(252, 252, 252, 1) 36%,
rgba(239, 239, 239, 1) 66%,
rgba(18, 34, 106, 1) 66%,
rgba(13, 31, 136, 1) 84%
');
以下是mixin的定义:
.gradientMultiple ( ... ) {
background-image: -webkit-linear-gradient(@arguments);
background-image: -moz-linear-gradient(@arguments);
background-image: -ms-linear-gradient(@arguments);
background-image: -o-linear-gradient(@arguments);
background-image: linear-gradient(@arguments);
}
.gradientMultipletop,
rgba255,255,255,10%,
rgba254,254,254,1 16%,
RGBA252252252,136%,
RGBA239239239,1 66%,
rgba 18,34,106,166%,
rgba 13,31136,184%;;
另见:
最后一句话是
当mixin强制您提供一个字符串,或者您不想让LESS计算参数值时,您可以使用一点javascript:
免责声明:JS评估现在已被弃用,可能会在不到3/4的时间内被删除,因此只有在处理没有其他替代方案的遗留代码时才使用此选项
.keyframes(~`
"translate, " +
"50% { transform: translateX(calc(50% - 25px)) } " +
"100% { transform: translateX(0px) } "
`);
请看我上面的答案,mixin只接受一个参数,而不是多个参数。此外,OP是关于拆分转义字符串的。实际上,这就是重点,对于这个用例,您根本不需要任何字符串或转义。请参阅编辑-您试图推送一个人工示例来证明蹩脚的转义js攻击-在某些罕见/ege情况下,您需要内联js,但将任何参数传递给mixin并不是其中之一,所以您很快就超出了Q的范围。例如,您编辑的snipped是在普通的Less中完成的,也不需要js黑客。