【问题标题】:Sass - import variables to be used in mixinSass - 导入要在 mixin 中使用的变量
【发布时间】:2013-01-12 20:22:48
【问题描述】:

有没有办法将外部变量导入 mixins?
我想从 mixin 参数生成一个变量名
然后从外部源调用它。这有意义吗?


variables.scss

/* Striped status bar variables ******************************************/

$greyFirstGradientStartColor: #999999;
$greyFirstGradientEndColor: #d3cfcf;
$greySecondGradientStartColor: #ababab;
$greySecondGradientEndColor: #595959;

mixins.scss

@import variables.scss

[...]

@mixin gradient-repeating($color, $deg, $firstWidth, $space, $secondWidth){

  background-image:
    repeating-linear-gradient(
      $deg,
      $(#{$color}FirstGradientStartColor),
      $(#{$color}FirstGradientEndColor) $firstWidth+px,
      $(#{$color}SecondGradientStartColor) ($firstWidth+$space)+px,
      $(#{$color}SecondGradientStartColor) $secondWidth+px
  );
}

my-main-css-file.scss

@import variables.scss;  
@import mixins.scss;  

[...]

@include gradient-repeating(grey, -45, 20, 0, 20);  

【问题讨论】:

  • 如果可能的话,这将是惊人的。如果您找到解决方案,请发布
  • 你试过这个但没用吗?或者你的实际问题是什么?我看不出为什么这不应该work

标签: css sass mixins


【解决方案1】:

没有。 Sass 中不存在变量变量。通常使用列表或列表列表代替。

你的 mixin 可以这样写:

$grey-gradient: #999999 #d3cfcf, #ababab #595959;

@mixin gradient-repeating($color, $deg, $firstWidth, $space, $secondWidth){
    $firstColor: nth($color, 1);
    $secondColor: nth($color, 2);
    background-image:
        repeating-linear-gradient(
          $deg,
          nth($firstColor, 1),
          nth($firstColor, 2) $firstWidth+px,
          nth($secondColor, 1) ($firstWidth+$space)+px,
          nth($secondColor, 1) $secondWidth+px
        );
}

.foo {
    @include gradient-repeating($grey-gradient, -45, 20, 0, 20);
}

【讨论】:

  • 这很聪明,我不熟悉 Sass 中列表的使用。使用列表似乎有点晦涩难懂,但我会说,易用性弥补了这一点。如果我从我的编码伙伴那里得到“OK”来更改项目模式,我将使用这个解决方案:) 非常感谢! (真的!)
  • 对于我自己的编码,我会将整个渐变写成一个变量:$grey-gradient: -45deg, #999999, #d3cfcf 20px, #ababab 20px + 0, #595959 20px;
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 2013-12-12
  • 2019-07-13
  • 2015-04-11
  • 2013-08-26
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多