[英]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.