使用SASS for循环来定义变量颜色

时间:2013-05-16 10:47:03

标签: css loops for-loop sass

所以我有一些像这样定义的颜色:

$blue_1     : #ecf5f9;
$blue_2     : #cfe5ef;
$blue_3     : #b1d5e6;

现在我想为每种颜色自动创建.blue_ {number}类。到目前为止,我得到了:

@for $i from 1 through 12{
    .blue_#{$i}{
        color: $blue_#{$i};
    }   
}

但'color:$ blue _#{$ i}'不起作用。 如何以其他方式引用变量?!我卡住了。

2 个答案:

答案 0 :(得分:1)

你可以做这样的事情

Source for the function nth

<强> SCSS

$colors : #ecf5f9 #cfe5ef #b1d5e6;
@for $i from 1 through 3 {
  h1.blue-#{$i}
    {
      background-color : nth($colors, $i)  
     }
}

<强> HTML

<h1 class="blue-1">blue one</h1>
<h1 class="blue-2">blue two</h1>
<h1 class="blue-3">blue three</h1>

<强>样本

请参阅demo

答案 1 :(得分:0)

您可以使用for循环执行此操作,如下所示:

$blue_1     : #ecf5f9;
$blue_2     : #cfe5ef;
$blue_3     : #b1d5e6;

@for $i from 1 through 9 {
    @if $i == 1 {
        $bg_color: $blue1
    }
    @if $i == 2 {
        $bg_color: $blue2
    }
    .....

    .blue#{$i} 
        background-color: #{!bg_color}
}

该代码应返回如下内容:

.blue1 {
  background-color:#ecf5f9;
}
.blue2 {
  background-color:#cfe5ef;
}