Less 更少:如何从地图中获取整个规则集

Less 更少:如何从地图中获取整个规则集,less,Less,我有一个嵌套的规则集(映射),如下所示 @typography: { @h1: { font: roboto; font-weight: 300; font-size: 9.6rem; line-height: 9.6rem; text-transform:none; } } 我知道如何检索和输出单个键,例如[font],但是有没有方法返回和输出整个内部规则集 .myclass { font

我有一个嵌套的规则集(映射),如下所示

@typography: {
    @h1: {
        font: roboto;
        font-weight: 300;
        font-size: 9.6rem;
        line-height: 9.6rem;
        text-transform:none;
    }
}
我知道如何检索和输出单个键,例如[font],但是有没有方法返回和输出整个内部规则集

.myclass {
    font: roboto;
    font-weight: 300;
    font-size: 9.6rem;
    line-height: 9.6rem;
    text-transform:none;
}
“当前无法以这种方式工作(v3.9)”。 我担心它不会像现在这样工作(特别是地图本身)。 直觉上,它会是这样的:

#usage {
    @typography[@h1]();
}
但目前该功能(级联
()
[]
运算符)尚未实现

“将感兴趣的规则集分配给临时变量,然后‘调用’它”之类的第一猜测解决方案也会失败:

#usage {
    @temp: @typography[@h1];
    @temp(); // error: not callable value
}
(这一个实际上算是一个bug-我是一张专用票)

这一切让我们进入下一节:


“考虑使用基于mixin的映射”。 请注意,虽然“基于变量的映射”(也称为DRs)现在似乎是一种更广泛的模式,但定义N维(也称为“嵌套”)映射的这些方法的排列较少(且数量无穷)

每种方法都有其优缺点,目前还不清楚选择哪一种作为“直接”方法(从长远来看,有尽可能将它们统一起来的趋势,但到目前为止还远远没有)

现在看看您试图表示的结构,w/o坚持“variable->
@variable
”原型。它看起来不像一个常规的CSS规则集:

。排版{
.h1{
字体:roboto;
字体大小:300;
字体大小:9.6rem;
线高:9.6雷姆;
文本转换:无;
}
}
?

通过这种方式,你已经得到了一个“基于mixin的映射”,你可以像使用“基于变量的映射”一样使用它。(实际上,“地图”的当前版本也建议使用两种方法,但不强制将其中一种作为“主要”)。
此“CSS”结构所需的唯一修改是将其内部或外部(或两者)规则集设置为参数混合(通过添加
()
),以便默认情况下规则不会出现在编译的CSS中

例如,像这样:

.typography {
    .h1() {
...
.typography() {
    .h1 {
...
或者像这样:

.typography {
    .h1() {
...
.typography() {
    .h1 {
...
(如果您更喜欢这些标识符,也可以使用
而不是

现在回到您的用例(解决方案):

再次感谢seven-seas-max。非常好的解释,我相信根据您提供的信息,我可以提出类似的建议。