如何使用&;(和选择器)通过LESS功能?

如何使用&;(和选择器)通过LESS功能?,less,Less,以下是输出需要的内容: div.star_mask { &.fill-0 { width: 0%; } &.fill-50 { width: 50%; } } 我做了很多次,所以我做了一个函数来生成它: #star { .star-fill(@width) { (~"&.fill-@{width}") { div { width: ~"@{width}%" }

以下是输出需要的内容:

div.star_mask {
    &.fill-0 {
        width: 0%;
    }
    &.fill-50 {
        width: 50%;
    }
}
我做了很多次,所以我做了一个函数来生成它:

#star {
    .star-fill(@width) {
        (~"&.fill-@{width}") {
            div { width: ~"@{width}%" }
        }
    }
}

div.star_mask {
    #star > .star-fill(0)
}
这将生成以下CSS:

div.star\u mask和.fill-0
而不是我需要的:
div.star\u mask.fill-0

有没有办法做到这一点?我可以把
&
放在调用函数的地方吗

最后,我自己编写了选择器代码:
div.star\u mask.fill-@{width}
并将函数调用放在上面一级,从而解决了这个问题。不过,把它们安顿在窝里还是很酷的

当less遇到(~“”)作为选择器时,它不会解析内容,而是一字不差地接受它,因此不能在其中使用&in

我认为目前还没有一种方法可以完全满足您的需求,不过请记住,您可以使用&在选择器的末尾,例如

.a {
  div& {
    foo:bar;
  }
}
变成

div.a {
  foo: bar;
}
但我不确定这是否有帮助