首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`#namespace > .mixin()` vs. `.namespace.mixin()`

`#namespace > .mixin()` vs. `.namespace.mixin()`
EN

Stack Overflow用户
提问于 2013-08-24 01:52:12
回答 2查看 1.1K关注 0票数 1

更少的文档和教程在引入名称空间时使用#namespace > .mixin()语法。不过,我发现自己对.namespace.mixin()语法比较熟悉,即:

代码语言:javascript
复制
.namespace() {
    .mixin() {
        foo: bar;
    }
}

#usage {.namespace.mixin()}

我是不是遗漏了什么?这两个变体之间有什么区别(特别是混和/变量影响作用域的方式,反之亦然)?还是它只是一种历史上根深蒂固的传统?

显然,.namespace > .mixin.namespace.mixin.namespace .mixin在用作选择器时是不同的。但是当它进入混合调用/扩展时,情况似乎是不同的。我不能举出一个这样的例子:

代码语言:javascript
复制
"#usage {#namespace > .mixing}"
"#usage {#namespace.mixing}"
"#usage {#namespace .mixing}"

等产生不相等的输出,假设.mixin被定义为参数规则集。.namespace也一样。例如:

代码语言:javascript
复制
/* 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的结果似乎都是一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-25 04:28:58

这种行为最初不是故意的,更像是被忽视了。然而,在这些年之后,它被证明比有害更有用,而且在可预见的将来(或永远)没有改变这种行为的理由和意图。因此,到现在(2020年),这种行为或多或少是“官方的”。

换言之:

  • 混合和名称包可以通过idclass元素标识符(即使用#.前缀)来声明。
  • 对于名称空间/嵌套混音调用/调用语句,选择器的任何组合器部件(如>+或空格)都将被忽略,并且不会产生任何影响。例如:

代码语言:javascript
复制
#namespace.mixin();
#namespace .mixin();
#namespace > .mixin();
#namespace>    .mixin(); 
// etc. 

上述所有语句都是完全相同的,并且完全匹配相同的混音。

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

票数 1
EN

Stack Overflow用户

发布于 2013-08-24 18:00:30

.namespace.mixin指的是两个类的元素,而.namespace .mixin会在.namespace中找到所有的.mixins,还是只是一个错误?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18414158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档