Css SyntaxError:计算函数'unit'时出错:unit的第一个参数必须是数字

Css SyntaxError:计算函数'unit'时出错:unit的第一个参数必须是数字,css,loops,random,less,mixins,Css,Loops,Random,Less,Mixins,我使用较少的mixin生成给定范围内的随机数。 代码如下: .makeRandom(@min: 0, @max: @min+1) { // Math.floor(Math.random() * (max - min + 1)) + min @getNum: `(Math.floor(Math.random() * (@{max} - @{min} + 1)) + @{min})`; } 并在调用div时调用另一个mixin set动画: .move (@left : 45% , @du

我使用较少的mixin生成给定范围内的随机数。 代码如下:

.makeRandom(@min: 0, @max: @min+1) {
  // Math.floor(Math.random() * (max - min + 1)) + min
  @getNum: `(Math.floor(Math.random() * (@{max} - @{min} + 1)) + @{min})`;
}
并在调用div时调用另一个mixin set动画:

.move (@left : 45% , @duration: 5s ,@delay : 2s) {
   animation: moveUp @duration linear @delay infinite;
   /* Safari and Chrome: */
   -webkit-animation: moveUp @duration linear @delay infinite ;
   .makeRandom(100,  400);
   margin-left:  unit(@getNum ,'px');
 }
但我得到了这个错误

SyntaxError:错误求值函数
单位
:单位的第一个参数必须是数字


当我试图更换装置时。如何更改@getnum的单位?

我在v1.5中注意到了这个问题

从v1.5开始,您不能将非数值(不传递
isnumber()
)传递给像
unit()
这样只接受数字作为参数的函数,即使它在早期版本中工作


和-javascript插值中的数值没有被更少的人识别为数值我在v1.5中注意到了这个问题

从v1.5开始,您不能将非数值(不传递
isnumber()
)传递给像
unit()
这样只接受数字作为参数的函数,即使它在早期版本中工作


和-javascript插值中的数值未被LESS识别为数值我不确定这是否也是您的情况,但是,大约4年后,我登上这一页,寻找同一个错误的答案,因此我决定在这里发布这篇文章,以便帮助处于同样困境的其他人我不确定这是否也是你的情况,但是,大约4年后,我登上这一页,寻找同一错误的答案,因此我决定在这里发布这篇文章,以便帮助处于同样困境的其他人@AsGoodAsItGets是正确的,如4.0所述

在类似除法的表达式周围需要括号(默认情况下),以强制进行数学计算


@正如4.0中所述,AsGoodAsItGets是正确的

在类似除法的表达式周围需要括号(默认情况下),以强制进行数学计算


我可能误解了一个步骤,但似乎您的1.5以下解决方案仍然无法与随机数生成一起工作,因为它会生成
NaN
。我认为这是javascript返回匿名值的问题,v.1.5无法正确处理该值。@ScottS我在less2css.org中再次尝试了它。。。它似乎工作得很好(从v1.3.2一直到1.6.0)。我使用了上面OP的精确代码,并用百分比函数
@getNum:(百分比(`(Math.floor(Math.random()*(@{max}-@{min}+1))+@{min}`)/100)包装它。。。然后得到随机数。好的,我确认它是好的。当我测试时,括号的位置不对。所以我是“误会”(从某种意义上说)。可能是我误会了一步,但似乎您的1.5以下的解决方案仍然无法与随机数生成一起工作,因为它会生成
NaN
。我认为这是javascript返回匿名值的问题,v.1.5无法正确处理该值。@ScottS我在less2css.org中再次尝试了它。。。它似乎工作得很好(从v1.3.2一直到1.6.0)。我使用了上面OP的精确代码,并用百分比函数
@getNum:(百分比(`(Math.floor(Math.random()*(@{max}-@{min}+1))+@{min}`)/100)包装它。。。然后得到随机数。好的,我确认它是好的。当我测试时,括号的位置不对。所以我是“误会”(从某种意义上说)。试试这个:试试这个:你好,欢迎来到So!请阅读,大家好,欢迎来到SO!请阅读,然后
margin-left:  unit(@getNum , px);
margin-left:  ~'@{getNum}px';
margin-left: 230px;