Syntax `#命名空间>。mixin()`vs.`.namespace.mixin()`

Syntax `#命名空间>。mixin()`vs.`.namespace.mixin()`,syntax,namespaces,less,Syntax,Namespaces,Less,所有较少的文档和教程都使用#namespace>.mixin()语法来表示名称空间。但是,我发现自己对.namespace.mixin()语法更为熟悉,例如: .namespace() { .mixin() { foo: bar; } } #usage {.namespace.mixin()} 我错过什么了吗?这两个变量之间有什么区别吗(特别是,混合/变量影响作用域的方式,反之亦然)?或者它只是某种历史上根深蒂固的传统 显然,.namespace>.mixi

所有较少的文档和教程都使用
#namespace>.mixin()
语法来表示名称空间。但是,我发现自己对
.namespace.mixin()
语法更为熟悉,例如:

.namespace() {
    .mixin() {
        foo: bar;
    }
}

#usage {.namespace.mixin()}
我错过什么了吗?这两个变量之间有什么区别吗(特别是,混合/变量影响作用域的方式,反之亦然)?或者它只是某种历史上根深蒂固的传统


显然,
.namespace>.mixin
.namespace.mixin
.namespace.mixin
用作选择器时是不同的野兽。但在mixin调用/扩展时,情况似乎不同。我无法举例说明:

"#usage {#namespace > .mixing}"
"#usage {#namespace.mixing}"
"#usage {#namespace .mixing}"
假设
。mixin
被定义为参数化规则集,则会产生不相等的输出。与
.namespace
相同。 例如:


所有1-6个结果似乎都相等。

.namespace.mixin
引用两个类的元素,而
.namespace.mixin
将查找.namespace中的所有.mixin,或者这仅仅是一个输入错误?

.namespace.mixin
指的是一个包含两个类的元素,而
.namespace.mixin
将在.namespace中查找所有.mixin,或者这仅仅是一个输入错误?

此行为最初不是有意的,更像是被忽略了。然而,经过这么多年的时间,结果证明它是有用的,而不是有害的,在可预见的未来(或永远)没有理由和意图改变这种行为。因此,到现在(2020年),这种行为或多或少是“官方的”

换言之:

  • mixin和namepsaces可以通过
    id
    class
    元素标识符(即使用
    #
    前缀)
  • 对于名称空间/嵌套的mixin invoke/call语句,选择器的任何组合符部分(如
    +
    或空格)都将被忽略,并且不受任何影响。例如:
以上所有语句都是相同的,并且完全匹配相同的mixin


.namespace#mixin
和其他组合相同。

此行为最初不是有意的,更像是被忽略了。然而,经过这么多年的时间,结果证明它是有用的,而不是有害的,在可预见的未来(或永远)没有理由和意图改变这种行为。因此,到现在(2020年),这种行为或多或少是“官方的”

换言之:

  • mixin和namepsaces可以通过
    id
    class
    元素标识符(即使用
    #
    前缀)
  • 对于名称空间/嵌套的mixin invoke/call语句,选择器的任何组合符部分(如
    +
    或空格)都将被忽略,并且不受任何影响。例如:
以上所有语句都是相同的,并且完全匹配相同的mixin

.namespace#mixin
和其他组合也是如此。

没错,“.namespace>.mixin”、“.namespace.mixin”和“.namespace.mixin”用作选择器时是不同的野兽。但当它进入mixin调用/扩展时,情况似乎就不同了。。我的答案太长,无法发表评论,所以我将其附加到我的原始问题中-见上文…你说得对,“.namespace>.mixin”、“.namespace.mixin”和“.namespace.mixin”用作选择器时是不同的野兽。但当它进入mixin调用/扩展时,情况似乎就不同了。。我的答案太长,无法发表评论,所以我将其附加到我的原始问题中-见上文。。。
/* A */
#namespace {
    .mixin1() {
        foo1: bar;
        .mixin1() {
            foo2: bar;
        }
    }

    .someruleset {
        foo3: bar;
        .mixin1 {
            foo4: bar;
        }
    }
}

/* 1 */
#u1 {#namespace > .mixin1()}
/* 2 */
#u2 {#namespace .mixin1()}
/* 3 */
#u3 {#namespace.mixin1}
/* 4 */
#u4 {#namespace .mixin1}
/* 5 */
#u5 {#namespace.mixin1.mixin1()}
/* 6 */
#u6 {#namespace.someruleset.mixin1()}

/* B */
.namespace {
    .mixin1() {
        foo1: bar;
        .mixin1() {
            foo2: bar;
        }
    }

    .someruleset {
        foo3: bar;
        .mixin1 {
            foo4: bar;
        }
    }
}

/* 1 */
#u1 {.namespace > .mixin1()}
/* 2 */
#u2 {.namespace .mixin1()}
/* 3 */
#u3 {.namespace.mixin1}
/* 4 */
#u4 {.namespace .mixin1}
/* 5 */
#u5 {#namespace.mixin1.mixin1()}
/* 6 */
#u6 {#namespace.someruleset.mixin1()}
#namespace.mixin();
#namespace .mixin();
#namespace > .mixin();
#namespace>    .mixin(); 
// etc.