SCSS如何定义动态样式

时间:2020-09-12 16:30:17

标签: css sass

以下是我当前的发生编译错误的代码。

$color-1: #353a4b;
$color-2: #5563a9;
$color-3: #7184e7;
$color-4: #c788e6;
$color-5: #f76789;

@for $i from 1 through 5 {
  .bg-color-#{$i} {
    background-color: $color-#{$i};
  }

  .fg-color-#{$i} {
    color: $color-#{$i};
  }
}

这给了我以下错误

SassError: Undefined variable: "$color-".

我想使用sass @for定义动态样式。

.bg-color-1 {
  background-color: $color-1;
}
.bg-color-2 {
  background-color: $color-2;
}

...

有人可以帮助我吗? 预先感谢

1 个答案:

答案 0 :(得分:2)

一种合适的解决方案是map variables,然后使用@each循环访问它们。 Codepen

$colors: (
  color-1: #353a4b,
  color-2: #5563a9, 
  color-3: #7184e7, 
  color-4: #c788e6,
  color-5: #f76789,
);

@each $color in $colors {
  $index: index($colors, $color);
  $color: nth($color, 2);
  
  .bg-color-#{$index} {
    background-color: $color;
  }
  
  .fg-color-#{$index} {
    color: $color;
  }
}
相关问题