使用 Less 在循环中将变量添加到不透明度

Adding a variable to opacity in a loop using Less

我在 Less 中有一个循环,其中包含 opacity。我希望 opacity 根据循环编号变量进行更改,但我一直收到错误 "unrecognised input".

像这样...

div {
    .circles(5);

    .circles(@n, @i: 1) when (@i =< @n) {
        &:nth-of-type(@{i}) {
            opacity: 0.@{i};
        }
        .circles(@n, (@i + 1));
    }
}

我也试过了...

opacity: 0.@i;

并且我尝试在不同的地方添加引号。

有什么想法吗?

要打印出数字,最好使用数学运算(如本例中的乘法),而不是使用字符串连接。下面的代码片段应该会产生您正在寻找的输出:

div {
  .circles(5);
  .circles(@n, @i: 1) when (@i =< @n) {
    &:nth-of-type(@{i}) {
      opacity: 0.1*@i; /* multiplication by 0.1 automatically converts it to number */
    }
    .circles(@n, (@i + 1));
  }
}

严禁做:(解释仅供理解)

谈到有问题的代码,您试图将变量的值附加到字符串 (0.),为此您需要将整个内容括在引号内,如下面的代码片段所示。仅当遵循此语法时才会发生字符串连接。需要注意的另一件事是打印的输出值不应包含引号字符,因此应使用 ~e() 去除引号。

div {
  .circles(5);
  .circles(@n, @i: 1) when (@i =< @n) {
    &:nth-of-type(@{i}) {
      opacity: ~"0.@{i}";
    }
    .circles(@n, (@i + 1));
  }
}