手动(但必须都是相同的输出)
仅使用当前的 mixin 代码,您可以通过以下方式添加:
较少的
.test {.box-shadow(0 0 unit(5+5, px), 30%)}
产生:
CSS 输出
.test {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
自动使用 LESS 1.3.2+(混乱和困难)
我已经修改了 mixin 来做一些 javascript 评估并得到你想要的。但是,我不是正则表达式专家,在技术上也不是 javascript 专家(只要知道足够的知识就可以解决),所以可能有一种更简洁的方式来做我正在做的事情,也有一种更通用的使用方式来做这件事。在我在这里的解决方案中,它要求您给它一个三个属性@style
字符串,并且最后一个以一个px
值给出(所以它不是很灵活,但符合您对这里问题的确切规范)。显然,下面的 LESS 1.4.0 代码比这更好,但在它结束测试之前,一些(也许是你)可能需要更像下面的代码:
较少的
.box-shadow(@style, @c) when (iscolor(@c)) {
@firstTwoParams: ~`(function() {
var makeArray = "@{style}".replace(/^\[/,'').replace(/\]$/,'').split(',');
return (makeArray[0]+makeArray[1]);
})()`;
@thirdParam: unit(~`(function() {
var makeArray = "@{style}".replace(/^\[/,'').replace(/\]$/,'').split(',');
return makeArray[2];
})()`, px);
@resetStyle: @firstTwoParams (@thirdParam+5);
box-shadow: @style @c;
-webkit-box-shadow: @resetStyle @c;
-moz-box-shadow: @style @c;
}
CSS 输出与下面的 LESS 1.4.0 代码答案相同。
使用 LESS 1.4.0 自动进行(清洁和简单)
根据注释的所需输出进行编辑
在 LESS 的最新版本(目前是 beta,1.4.0)中,您可以使用该extract
功能访问第三个成员,然后自动设置一些内容以添加到其中。这是一个重新设计的 mixin 的示例(它将使用与您当前拥有的完全相同的调用):
.box-shadow(@style, @c) when (iscolor(@c)) {
@resetStyle: extract(@style,1) extract(@style,2) (extract(@style,3)+5);
box-shadow: @style @c;
-webkit-box-shadow: @resetStyle @c;
-moz-box-shadow: @style @c;
}
所以你.box div
调用它的代码会产生这个:
.box div {
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
由于新 mixin中的变量中设置了常量,因此它已添加5px
到您的列表中。5px
@resetStyle