Css 有没有办法用更少的时间编写自定义选择器?

Css 有没有办法用更少的时间编写自定义选择器?,css,less,Css,Less,我将举一个我想做的例子 :all() { &, &:link, &:visited, &:active, &:focus } 上面是一个“自定义选择器”的想象,它本身返回锚标记的所有伪类的选择,减:hover 我想将其用作选择器,如下所示: .menu { a.top-level:all, span { color: @dormant-grey; } a.top-level

我将举一个我想做的例子

:all() {
    &, 
    &:link,
    &:visited,
    &:active,
    &:focus
}
上面是一个“自定义选择器”的想象,它本身返回锚标记的所有伪类的选择,减:hover

我想将其用作选择器,如下所示:

.menu {
    a.top-level:all, span {
        color: @dormant-grey;
    }
    a.top-level:hover {
        color: @off-black;
    }
}
为使其产生:

.menu a.top-level,
.menu a.top-level:link,
.menu a.top-level:visited,
.menu a.top-level:active,
.menu a.top-level:focus,
.menu span {
    color: #686868;
}
.menu a.top-level:hover {
    color: #22282a;
}
因此,我希望我能清楚地传达问题是什么。是否有方法重复使用选择

请注意,这与将样式传递到mixin不同。将样式传递到mixin中,为了实现同样的效果,需要重复样式。一次传递到mixin,然后再次传递到mixin无法处理的所有其他选择。这也是我现在正在做的,我发现它不值得使用mixin,因为我已经重复了很多次,所以我要把它拔出来

所以我希望这是清楚的。我想问的是,是否有办法重用选择,而不是样式。如果less不能做到这一点,有没有一种语言可以做到?

(为了不留下这个答案,请复制我上面的评论):


这显然会为
.span
a.top-level
系列产生重复的样式,但只要您关注并生成一个缩小的CSS版本
--clean CSS--clean option=--advanced
option将消除重复的样式。

Sass和LESS是不可互换的。Sass可以做到这一点:只是再次确认一下,这与您所说的您已经尝试过的是一样的吗?再想一想,为什么不在一个选择器上使用
extend
,它是
的一部分。所有的
都像(对于mixin不能处理的项目)@AndrewHoffman:您检查过我之前关于
extend
的评论了吗。它不是很好,也不是最有效的,但我认为它是对当前版本的一个不错的补充。这种方法的一个问题是,
extend
没有将
&
作为选择器,因此我们必须手动键入完整的选择器。@安德烈夫曼:你说得对,我的答案不是关于主题的,因为你明确地想要一个更少的解决方案。我拆了那根柱子。
.all(@-) {
    &,
    &:link,
    &:visited,
    &:active,
    &:focus {
        @-();
    }
}

.menu {
    .span {
        color: red;
    }
    a.top-level {
        .all({.span});
        :hover {
            color: blue;
        }
    }
}