我尝试通过lessphp将此.less代码编译为.css并获取此错误:
Fatal Error:
====================
infinite loop detected: @pos-x: failed at `background-position: @pos-x 0; }` line: 3
这是我的代码。
@pos-x : 0;
@w : 30px;
.a { background-position: @pos-x 0; }
@pos-x: @pos-x - @w;
.b { background-position: @pos-x 0; }
它出了什么问题?我可以在LESS中使用可变量覆盖吗?
答案 0 :(得分:2)
@pos-x: @pos-x - @w;
是不允许的。 The documentation states,“请注意,LESS中的变量实际上是'常量',因为它们只能定义一次。”
我相信在这种情况下LESS所发生的事情基本上是这样的:
@pos-x: 0;
@pos-x: @pos-x - 30px; puts it into this loop...
@pos-x = -30px - 30px ...
@pox-x = -60px - 30px ...
@pox-x = -90px - 30px ... etc.
因此,它不断重新计算@pos-x
试图达到一个永远不会达到的最终解决方案。每次重新分配时,它都会尝试根据新的分配进行重新评估。
所以做这样的事情:
@pos1-x : 0;
@w : 30px;
.a { background-position: @pos1-x 0; }
@pos2-x: @pos1-x - @w;
.b { background-position: @pos2-x 0; }