更改混音中的单位

Change unit in a mixin

假设我有一个 LESS mixin 可以将任何单位更改为 vw。

.change-unit (@property, @value) {
  @{property}: unit(@value, vw);
}

然后调用 .change-unit(width, 10px) 将导致 width: 10vw;

我想以类似的方式将 px 更改为 vw,并在滤镜中使用模糊效果。

如果在调用 .change-unit(filter, blur(5px)) 之后我想得到 filter: blur(5vw);,我应该如何更改我的 mixin?这可能吗?

您可以在使用修改值的过滤器时添加第三个参数:

.change-unit (@property, @value) {
  @{property}: unit(@value, vw);
}

.change-unit (@property, @value, @function) {
  @converted: unit(@value, vw);
  @{property}: ~'@{function}(@{converted})';
}

#no-filter {
    .change-unit(width, 10px);
}

#filter {
    .change-unit(filter, 5px, blur); 
}

大多数时候你会按原样使用mixin,但是当你需要使用一个函数时,你只需添加函数的名称作为第三个参数。