Less 小于CSS边框半径的混合不是0

Less 小于CSS边框半径的混合不是0,less,Less,我想在我的边界半径mixin上添加一个保护,如果边界半径为0,它不会给出任何输出。在我使用多个参数之前,我的LESS代码工作得很好 .border-radius (@radius) when (@radius > 0) { border-radius: @radius; } .dosnt-work { .border-radius (5px 10px 5px 10px); } .works-correctly { .border-radius (5px); } .work

我想在我的边界半径mixin上添加一个保护,如果边界半径为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个不同的混合,这是可能的吗?

因为您只接受一个参数,当您使用类似“5px 10px 5px 10px”的东西时,它将整个字符串与0进行比较,不能合理地认为字符串大于零。解决这个问题的唯一方法是为多个参数创建另一个mixin。您可以使用相同的名称,
.border radius
:只需使用多个参数重新定义它。根据参数的数量,要调用的训练将更少

然而,我认为这总的来说有点误导。为什么要忽略零的边界半径值?除此之外,如何替代以前的规则以禁用边界半径

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

但是请注意,这对(0)、(0)等参数不起作用

你为什么要这么做?如果要覆盖现有边界半径并将其设置为
0
,会发生什么情况?