更新:LESS 1.4+ 功能
对于 LESS 1.4,不需要原始答案中用于逗号分隔参数的 javascript。相反,在参数字符串末尾使用“虚拟”分号会导致逗号被视为列表分隔符,而不是参数分隔符,因此现在在估算多个转换时可以使用:
少 1.4+
mixin 调用中的分号 (.transition-properties(border-top .25s linear, color .5s linear;);) 非常重要。如果省略,则两个参数之间的逗号将被删除,最终导致无效的 css 规则。
.transition-properties(...) {
-webkit-transition: @arguments;
-moz-transition: @arguments;
-o-transition: @arguments;
transition: @arguments;
}
.yourClass {
border-top: 1px solid black;
.transition-properties(border-top .25s linear, color .5s linear;); /* semicolon is necessary */
} |
NOTE THIS SEMICOLON
.yourClass:hover {
border-top: 6px solid #ff3300;
}
CSS 输出
注意逗号位于两个属性值之间:
.yourClass {
border-top: 1px solid black;
-webkit-transition: border-top 0.25s linear, color 0.5s linear;
-moz-transition: border-top 0.25s linear, color 0.5s linear;
-o-transition: border-top 0.25s linear, color 0.5s linear;
transition: border-top 0.25s linear, color 0.5s linear;
}
.yourClass:hover {
border-top: 6px solid #ff3300;
}
原始答案 [Pre LESS 1.4]
显然,具体情况取决于您的具体实施。但是,这大致说明了您将如何使用它:
少
.transition-properties(...) {
@props: ~`"@{arguments}".replace(/[\[\]]/g, '')`;
-webkit-transition: @props;
-moz-transition: @props;
-o-transition: @props;
transition: @props;
}
.yourClass {
border-top: 1px solid black;
.transition-properties(border-top .25s linear);
}
.yourClass:hover {
border-top: 6px solid #ff3300;
}
CSS 输出
.yourClass {
border-top: 1px solid black;
-webkit-transition: border-top 0.25s linear;
-moz-transition: border-top 0.25s linear;
-o-transition: border-top 0.25s linear;
transition: border-top 0.25s linear;
}
.yourClass:hover {
border-top: 6px solid #ff3300;
}
See Example Fiddle
说明
什么
@props: ~`"@{arguments}".replace(/[\[\]]/g, '')`;
允许你做的是放入多个逗号分隔的转换,比如:
.transition-properties(border-top .25s linear, color 1s linear);
编译后用逗号分隔它们(例如,仅显示一行):
transition: border-top 0.25s linear, color 1s linear;
如果您只使用直接的@arguments,您最终会得到没有逗号分隔:
transition: border-top 0.25s linear color 1s linear;
这对属性不正确。