Css 是否可以创建本地/私有sass混合?

Css 是否可以创建本地/私有sass混合?,css,sass,Css,Sass,我有三个sass文件:a.scss、b.scss、c.scss a、 scss: @mixin font($size, $color){ font-size: #{$size}; color: #{$color} } p{ @include font(10px, blue) } b、 scss: @mixin font() { .. } c、 scss @import a.scss @import b.scss 我认为b.scss中的mixin font()覆盖了a

我有三个sass文件:a.scss、b.scss、c.scss

a、 scss:

@mixin font($size, $color){
  font-size: #{$size};
  color: #{$color}
  }

 p{
  @include font(10px, blue)
  }
b、 scss:

@mixin font()
{
..
}
c、 scss

@import a.scss
@import b.scss
我认为b.scss中的mixin font()覆盖了a.scss中的mixin字体($size,$color)

p{
  @include font(10px, blue)  // use mixin font() in b.scss, error
  }

是否可以创建本地/私有sass混合?或者sass中的所有mixin都是全局的,我必须为每个mixin给它们唯一的名称?

你说得对。正如在典型的CSS文件中一样,sass项目是自上而下编译的。因此,与前一个同名的mixin将覆盖它。如果您希望在c.scss中使用原始mixin,则必须重新定义它。

选择器中的mixin与Sass变量一样是该选择器的本地变量。这两种混合物相互独立:

.foo{
    @mixin my_color(){
        color: #ffcc00;
    }
    @include my_color;
}

.bar{
    @mixin my_color(){
        color: #00ffcc;
    }
    @include my_color;
}
因此,为了回答您的最后一个问题,只有在全局级别定义的mixin是全局的,否则您可以安全地重用名称。在您的示例中,如果您的a.scs、b.scs和c.scs被构造为定义不同的总体类(例如header、.main、.footer),那么您可以为每个类使用本地字体混合

相关: