You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Less:在when条件语句中设置变量编译报错,求解决方法

解决Less Mixin守卫语法错误的问题

这个报错是因为你写错了Less中守卫(guard)的语法位置,有两种正确的写法可以实现你的需求,我给你分别说明:

写法1:将守卫作为Mixin定义的一部分

把when条件直接跟在Mixin的参数列表后面,用来限定这个Mixin仅当参数满足条件时生效:

#make-grid(@columns) when (@columns = 10) {
  @a: 1;
}

// 调用示例
.demo {
  #make-grid(10); // 只有传入10时,@a才会被设置
  result: @a; // 编译后为 result: 1;
}

如果需要多分支匹配不同的@columns值,可以定义多个带不同守卫的同名Mixin:

#make-grid(@columns) when (@columns = 10) {
  @a: 1;
}

#make-grid(@columns) when (@columns = 12) {
  @a: 2;
}

写法2:Mixin内部嵌套守卫(适合多条件分支)

如果你想在同一个Mixin内部根据不同参数值设置变量,需要用& when的语法(&代表当前Mixin的作用域),这才是Less支持的嵌套守卫写法:

#make-grid(@columns) {
  & when (@columns = 10) {
    @a: 1;
  }
  
  & when (@columns = 15) {
    @a: 3;
  }
}

你原来代码的错误原因

你把when条件块直接写在了Mixin的大括号里却没有加&,这不符合Less的语法规则,Less无法识别这种写法,因此抛出了"unrecognised input"的错误。加上&或者把守卫移到Mixin参数后,就能正常编译了。

内容的提问来源于stack exchange,提问作者Raphael Jeger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:44