2

我试图通过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 中使用变量覆盖吗?

4

1 回答 1

2

@pos-x: @pos-x - @w;不允许。文档指出,“请注意,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; }
于 2012-12-17T17:42:04.780 回答