Stylus 通过循环创建混合

Stylus create mixins via loop

我的目标是通过数组创建一组混入。 我的想法是应用代码如下:

f_colors = (f1 f2 f3 f4 f5)
for $i in 0..length(f_colors)
    v = f_colors[$i]
    num = $i+1

   f{num}cl()
      color v

   f{num}bg()
      background-color: v

// and use to generate css
body
   h1
       color: white
       f5bg ''

我在 f_colors 中存储了一个颜色列表。 在这个例子中,我会得到一个输出

body h1 {
   background-color: #00f; // f5 color
   color: white;
}

是否可能,或者我最好的方法是使用 mixin,如下所示:

fbg(num)
    background-color: f_colors[num-1]

fcl(num)
    color: f_colors[num-1]

感谢阅读。

您必须求助于 define BIF:

$colors = (f1 f2 f3 f4 f5)
for $c, $i in $colors
  define("f"+($i + 1)+"bg", @() {
    background-color: $c
  })

// and use to generate css
body
  h1
    color: white
    f5bg ''