3

如果我有一个 LESS 参数混合,例如:

.trans (@what: all, @time: 0.2s, @type: ease-in-out) {
-webkit-transition: @arguments;
-moz-transition: @arguments;
-o-transition: @arguments;
-ms-transition: @arguments;
transition: @arguments; 
} 

它按预期工作:

.myItem {
  .trans;
 }

但是如果我想将@time 设置为 0.4s,我似乎也必须为第一项传递一个参数:

.trans(all, 0.4s);

是否有只传递空参数的语法,所以只使用默认值(“all”)?这不起作用,编译时抛出错误:

.trans(,0.4s);

谢谢。

4

2 回答 2

11

可能为时已晚,但响应可能对其他人有用。

您还可以在调用 mixin 时命名变量,而不必遵循顺序。

考虑到你的情况:

 .trans (@what: all, @time: 0.2s, @type: ease-in-out) {  
   -webkit-transition: @arguments;  
   -moz-transition: @arguments;  
   -o-transition: @arguments;  
   -ms-transition: @arguments;  
   transition: @arguments; 
}

你可以做类似.trans(@time:1s);.trans(@type:linear, @what: opacity);

希望能帮助到你。

于 2012-11-16T00:32:43.863 回答
0

虽然语言可能不支持您所想的那样,但 LESS 确实有重载,因此根据您的用例,您可以使用以下方法:

.trans (@time) {
    -webkit-transition: all @time ease-in-out;
    -moz-transition: all @time ease-in-out;
    -o-transition: all @time ease-in-out;
    -ms-transition: all @time ease-in-out;
    transition: all @time ease-in-out; 
} 

除了您现有的之外,只是为了允许更短的语法。

于 2012-04-11T04:46:01.240 回答