简体   繁体   English

Sass动态变量循环

[英]Sass Dynamic Variable in Loop

How to get mixin argument from array variable in a loop with Sass ? 如何使用Sass在循环中从array variable获取mixin argument Example code is below: 示例代码如下:

 $colors: red green blue; $red-foo: 100px; $red-bar: 110px; $red-baz: 120px; $green-foo: 100px; $green-bar: 110px; $green-baz: 120px; $blue-foo: 100px; $blue-bar: 110px; $blue-baz: 120px; @mixin item($color-foo, $color-bar, $color-baz){ width: $color-foo,; height: $color-bar; ... } @each $color in $colors { .class-#{$color}{ @include item($color#{-foo}, $color#{-bar}, $color#{-baz}) } } 

Desired output is below: 所需的输出如下:

  .class-red{ //variables } .class-green{ //variables } .class-blue{ //variables } 

Also is there a way for shorthand of $color-foo, $color-bar, $color-baz like @include item($color-shorthand) ? 还有没有办法像@include item($color-shorthand) $color-foo, $color-bar, $color-baz@include item($color-shorthand)类似@include item($color-shorthand)呢? Maybe there could be a better solution for this. 也许对此有更好的解决方案。

You want Sass Maps 你想要萨斯地图

$colors: (
    red: (
        foo: 100px,
        bar: 110px,
        baz: 110px
    ),
    green: (
        foo: 200px,
        bar: 210px,
        baz: 220px
    ),
    blue: (
        foo: 300px,
        bar: 310px,
        baz: 320px
    )
);

@mixin item ($color-foo, $color-bar, $color-baz) {
    width: $color-foo;
    height: $color-bar;
    padding: $color-baz;
}

@each $name, $value in $colors {
    .class-#{$name} {
        @include item(
            map-get($value, foo),
            map-get($value, bar),
            map-get($value, baz)
        );
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM