@each索引循环

我想知道是否可以为@each循环获取元素索引。

我有以下代码,但我想知道$i变量是否是执行此操作的最佳方法。

当前代码:

$i: 0;
$refcolors: #55A46A, #9BD385, #D9EA79, #E4EE77, #F2E975, #F2D368, #F0AB55, #ED7943, #EA4E38, #E80D19;

@each $c in $refcolors {
    $i: $i + 1;
    #cr-#{$i} strong {
        background:$c;
    }   
}
凯伽罗2020/03/18 18:31:07

首先,该@each功能不是来自Compass,而是来自Sass。


要回答您的问题,这不能通过each循环来完成,但是很容易将其转换为@for可以执行以下操作循环:

@for $i from 1 through length($refcolors) {
    $c: nth($refcolors, $i);

    // ... do something fancy with $c
}
DavaidMandy2020/03/18 18:31:07

更新此答案:是的,您可以使用@each循环来实现

$colors-list: #111 #222 #333 #444 #555;

@each $current-color in $colors-list {
    $i: index($colors-list, $current-color);
    .stuff-#{$i} { 
        color: $current-color;
    }
}

资料来源:http : //12devs.co.uk/articles/handy-advanced-sass/