本地化/确定sass mixin

时间:2013-11-11 14:43:24

标签: css sass

有没有办法将SCSS mixin本地化以仅应用于某个范围?

我有以下example

...我有几个基本的mixins

@mixin shadow ($color) { 
  text-shadow: 4px 3px 0 $color, 7px 6px 0 rgba(0,0,0,.2);
}

@mixin shadow-icon ($color) { 
  span[class*='entypo'] {
    @include shadow($color);
    font-size: 156px;
  }  
}

我不想为每个item重复使用不同颜色的完全相同的代码。但是这将是这个页面的一次性风格,所以我不希望这些文件/范围/等的任何地方都可以访问。

是否存在对mixin进行本地化或范围化的方法?

1 个答案:

答案 0 :(得分:5)

我明白了。 Mixins使用与sass变量相同的规则,如果它们嵌套在代码块中,则在该块之外是不可见/可用的。

因此,我所做的只是在item定义中嵌套不同的“项目”;在item定义中定义mixin。结果是mixin只能在item块中使用。

Check it out

.item {
  @mixin shadow-icon ($color) { 
    span[class*='entypo'] {
      text-shadow: 4px 3px 0 $color, 7px 6px 0 rgba(0,0,0,.2);
      font-size: 156px;
    }  
  }

  &.create {
    $createColor: rgb(69, 178, 157);

    background: $createColor;

    @include shadow-icon($createColor);
  }

  &.view {
    $viewColor: rgb(239, 201, 76);

    background: $viewColor;

    @include shadow-icon($viewColor);
  }

  &.report {
    $reportColor: rgb(226, 122, 63);

    background: $reportColor;

    @include shadow-icon($reportColor);
  }
}