17

我正在尝试制作一个 LESS mixin,它会给我这个输出:

.resource:nth-child(8n+1) { clear: left; }

到目前为止我有这个:

.wrap-every(@n) {
    &:nth-child(@n + "n+1") {  // parse error on this line
        clear: left;
    }
}

.resource {
    .wrap-every(8);
}

但它在指示的行上给出了解析错误

ParseError:无法识别的输入

有没有办法做到这一点?

4

1 回答 1

26

小于 >= 1.4

你可以这样做:

.wrap-every(@n) {
  &:nth-child(@{n}n + 1) {
        clear: left;
    }
}

这应该有所需的输出。无需任何黑客攻击。

在 Less 的旧版本中

您可以尝试简单的字符串插值

.wrap-every(@n) {
    @t: ~":nth-child(@{n}n + 1)";
    &@{t} {
        clear: left;
    }
}

两种情况下的输出CSS应该是这样的:

.resource:nth-child(8n + 1) {
  clear: left;
}
于 2013-08-08T09:31:12.283 回答