Less 从命名空间引用变量时css语法错误更少

Less 从命名空间引用变量时css语法错误更少,less,Less,尝试从命名空间中引用变量时出现语法错误,原因如下: #testns { @my_color: #04ffff; .me() { color: blue; } } .fun { color: #testns[@my_color]; } 如果我执行以下操作,mixin工作正常: .fun { #testns > .me(); } 但由于某种原因,我无法从名称空间引用变量。我正在使用asual库用Java构建这些,其他一切都运行得很好

尝试从命名空间中引用变量时出现语法错误,原因如下:

#testns {
    @my_color: #04ffff;
    .me() {
        color: blue;
    }
}

.fun {
    color: #testns[@my_color];
}
如果我执行以下操作,mixin工作正常:

.fun {
    #testns > .me();
}

但由于某种原因,我无法从名称空间引用变量。我正在使用asual库用Java构建这些,其他一切都运行得很好

名称空间不是这样工作的。名称空间允许您声明要在mixin中使用的局部作用域变量(有点像CSS闭包,ha!),并且可以从名称空间束外部引用mixin。但是,名称空间内的变量是私有的,不能从名称空间外引用。

我认为名称空间不是这样工作的。您可以在名称空间中设置局部变量并在mixin规则中引用它们,但是您不能直接访问变量(AFAIK)@Mathletics:谢谢您的评论,它帮助了我。你为什么不把它作为一个答案发布出来呢?“有时候,为了组织的目的,你可能想把你的变量或混合项分组……”也许他们应该让文本不那么模棱两可。@zanona你完全正确。它们并没有明确声明变量不能从外部访问,尽管您可以从下一节的作用域中推断出来。解析器实际上不知道
id
选择器声明和
#命名空间
块之间的区别,只是后者没有声明的规则,只有变量和混合。因此,至少现在,变量被限制在其范围内。文档已经更新,以更清楚地说明其工作原理: