#2.(已弃用)调用者作用域可以访问混入中的变量

Mixins 会将它们的变量推送到调用者作用域,但前提是该变量未在本地定义。

#ns {
  .mixin-1() {
    @a: one;
    @b: two;
  }
}
.rule {
  @b: three;
  #ns.mixin-1();
  prop-1: @a;
  prop-2: @b;
}
/* OUTPUTS:
.rule {
  prop-1: one;
  prop-2: three;
}
*/

这是违反直觉的,因为:

  1. 调用者作用域中更高的变量可以被覆盖。
  2. 这也不是典型的语言行为。
  3. 它不同于分离规则集的行为。

此外,随着地图的引入,你可以直接检索变量值(和混合)。

首选方法:

#ns {
  .mixin-1() {
    @a: one;
    @b: two;
  }
}
.rule {
  @returns: #ns.mixin-1();
  prop-1: @returns[@a];
  prop-2: @returns[@b];
}
/* OUTPUTS:
.rule {
  prop-1: one;
  prop-2: two;
}
*/