将循环值的样式插值插入选择器

时间:2017-02-05 06:26:49

标签: for-loop css-selectors interpolation stylus css-preprocessor

我试图做一些我认为可能很简单的事情 - 输出所有h1到h6选择器。我更成功地创建了一个mixin,它也为该属性输出一个属性和一个值,而不仅仅是插入到选择器中,但即使这样,我也无法创建一个mixin,它可以成功获取属性的任何参数和值。

可能最终得到了一个在某个特定位置完成工作的mixin。如何修改此解决方案以便我可以将其用于任何属性和值组合?

hcolor() {
    headings = 1 2 3 4 5 6
    selectorh = 'h'
    for hnumber, hnumber in headings {
        // join(selectorh, hnumber)
        +cache('h' + hnumber) {
            color: colordarkgray
        }
        hnumber = hnumber +1
    }
}

我尝试过的一件事并没有成功:

hify(property, value) {
    headings = 1 2 3 4 5 6
    selectorh = 'h'
    for hnumber, hnumber in headings {
        // join(selectorh, hnumber)
        +cache('h' + hnumber) {
            {property}: {value}
        }
        hnumber = hnumber +1
    }
}

根据Sass解决方案提供的另一项尝试不会引发任何错误,但我不知道如何在选择器中使用它,如果它完全有效:

hify() {
    hstart = 1
    hstop = 6
    headings = 1 2 3 4 5 6
    for hnumber in headings {
        if hnumber < hstop {
            return 'h{hnumber}, '
        }
        else if hnumber == hstop {
            return 'h{humber}'
        }
        hnumber = humber + 1
    }
}

我觉得我必须亲近,但我无法将有关手写笔interpolationdefault functions的信息调整为解决方案。

1 个答案:

答案 0 :(得分:2)

嗯,你的Sass示例的略微修改版本:

headings($from = 1, $to = 6)
  if $from == $to
    'h' + $from
  else
    'h' + $from + ',' + headings($from + 1, $to)

{headings(1, 4)}
  color: red
  background: blue