0

我想在我的border-radius mixin上添加一个Guard,如果border-radius为0,它不会给出任何输出。我的LESS代码效果很好,直到我使用多个参数。

.border-radius (@radius) when (@radius > 0) {
  border-radius: @radius;
}

.dosnt-work {
  .border-radius (5px 10px 5px 10px);
}

.works-correctly {
  .border-radius (5px);
}

.works-correctly-too {
  .border-radius (0px);
}

如果不创建 4 个不同的 mixin,这可能吗?

4

2 回答 2

2

由于您只接受一个参数,因此当您使用“5px 10px 5px 10px”之类的参数时,它会将整个字符串与 0 进行比较,并且不能合理地认为字符串大于零。解决这个问题的唯一方法是为多个参数设置另一个 mixin。您可以使用相同的名称,.border-radius: 只需使用多个参数再次定义它。LESS 会根据参数的数量来训练调用哪个。

但是,我认为这总体上有点误导。为什么要忽略零的边界半径值?你怎么能覆盖以前的规则来关闭边界半径?

于 2013-10-23T15:43:29.370 回答
0
.border-radius(@radius) when not(@radius = 0) {
   border-radius: @radius;
}

但是请注意,这不适用于 (0 0)、(0 0 0 0) 等参数...

于 2013-10-23T17:21:55.613 回答