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语句,选择器的任何组合符部分(如
、
或空格)都将被忽略,并且不受任何影响。例如:+
与
.namespace#mixin
和其他组合相同。此行为最初不是有意的,更像是被忽略了。然而,经过这么多年的时间,结果证明它是有用的,而不是有害的,在可预见的未来(或永远)没有理由和意图改变这种行为。因此,到现在(2020年),这种行为或多或少是“官方的”
换言之:
- mixin和namepsaces可以通过
或id
元素标识符(即使用class
或#
前缀) - 对于名称空间/嵌套的mixin invoke/call语句,选择器的任何组合符部分(如
、
或空格)都将被忽略,并且不受任何影响。例如:+
.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.