将`!important`添加到mixin中

时间:2013-01-21 08:36:52

标签: css sass

我想将!important添加到mixin中。我尝试了以下几种方法,并返回错误:

@include linear-gradient(hsl(68%, 94%, 90%), hsl(68%, 90%, 80%)); !important

@include linear-gradient(hsl(68%, 94%, 90%), hsl(68%, 90%, 80%)) !important;

有没有办法正确地做到这一点?

4 个答案:

答案 0 :(得分:3)

!important不能用于mixin。请参阅以下链接。

Adding !important using a Compass Mixin

https://github.com/cloudhead/less.js/issues/547

):

答案 1 :(得分:3)

在某些情况下,我使用名为$important的可选参数,可以在true中传递该参数。

示例:

my-mixin($important: true);

它看起来像这样,带有一个辅助函数,以避免重复我必须切换important的属性:

@function if-important($important){
  @return #{if($important, '!important', '')};
}

@mixin my-mixin($important: false) {
  border-radius: 0; //whatever
  border: 1px solid #ccc if-important($important);
  background-color: #fff if-important($important);
  color: #000 if-important($important);
}

答案 2 :(得分:0)

你不能在Mixin上使用!important。

它最终会给你一个SASS语法错误。

请参阅this question for more information

答案 3 :(得分:0)

尝试将其作为参数传递

@mixin anim($params...){

  $values: null;

  @for $i from 0 to length($params) {

    @debug #{nth($params, $i + 1)};

    @if '#{nth($params, $i + 1)}' != '!important' {
      $values: #{nth($params, $i + 1)} $animation__time $animation__easing, $values;
    }
  }
  @if '#{nth($params, length($params))}' != '!important' {
    transition: $values;
  }
  @else {
    transition: $values !important;
  }

}

用法:

@include anim(background-color, color, !important);