7

我想添加!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

4 回答 4

7

在某些情况下,我使用一个名为的可选参数$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);
}
于 2020-03-11T13:39:42.240 回答
3

!important 不能在 mixin 中使用。请参阅以下链接。

使用 Compass Mixin 添加 !important

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

):

于 2013-01-21T09:04:03.937 回答
1

你不能在 Mixin 上使用 !important。

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

有关更多信息,请参阅此问题

于 2013-01-21T08:45:28.193 回答
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);
于 2020-01-15T11:40:12.263 回答