更少的文档和教程在引入名称空间时使用#namespace > .mixin()语法。不过,我发现自己对.namespace.mixin()语法比较熟悉,即:
.namespace() {
.mixin() {
foo: bar;
}
}
#usage {.namespace.mixin()}我是不是遗漏了什么?这两个变体之间有什么区别(特别是混和/变量影响作用域的方式,反之亦然)?还是它只是一种历史上根深蒂固的传统?
显然,.namespace > .mixin、.namespace.mixin和.namespace .mixin在用作选择器时是不同的。但是当它进入混合调用/扩展时,情况似乎是不同的。我不能举出一个这样的例子:
"#usage {#namespace > .mixing}"
"#usage {#namespace.mixing}"
"#usage {#namespace .mixing}"等产生不相等的输出,假设.mixin被定义为参数规则集。.namespace也一样。例如:
/* 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()}所有1-6的结果似乎都是一样的。
发布于 2013-08-25 04:28:58
这种行为最初不是故意的,更像是被忽视了。然而,在这些年之后,它被证明比有害更有用,而且在可预见的将来(或永远)没有改变这种行为的理由和意图。因此,到现在(2020年),这种行为或多或少是“官方的”。
换言之:
id或class元素标识符(即使用#或.前缀)来声明。>、+或空格)都将被忽略,并且不会产生任何影响。例如:#namespace.mixin();
#namespace .mixin();
#namespace > .mixin();
#namespace> .mixin();
// etc. 上述所有语句都是完全相同的,并且完全匹配相同的混音。
.namespace #mixin和其他组合也是如此。
发布于 2013-08-24 18:00:30
.namespace.mixin指的是两个类的元素,而.namespace .mixin会在.namespace中找到所有的.mixins,还是只是一个错误?
https://stackoverflow.com/questions/18414158
复制相似问题