1. Map用法
> npm i dart-sass -S
// 单文件/文件夹监听
> npx dart-sass --watch style.scss:style.css
// map.scss
$spacers: (
6: 60px,
7: 70px
) !default;
$utils: (
pl: {
property: padding-left,
values: $spacers
}
) !default
// ulities.scss
$spacer: 8px;
$spacers: map-merge($map1: (
0: 0,
1: 1 * $spacer,
2: 2 * $spacer,
3: 3 * $spacer,
4: 4 * $spacer,
5: 5 * $spacer
), $map2: $spacers);
$utils: map-marge($map1: (
m: (
property: margin,
values: $spacers
)
mx: (
property: margin-left margin-right,
values: $spacers
)
p: (
property: padding,
values: $spacers
)
px: (
property: padding-left padding-right,
values: $spacers
)
), $map2: $utils)
$each $key, $value in $utils {
// 取utils的 步进长度,循环的数据
// 确定了循环的长度
$values: map-get($map: $value, $key: values)
// 循环产生不同的spacer对应的样式
@each $item-key, $item-value in $values {
// 取多个元素的样式进行遍历
$properties: map-get($map: $value, $key: property);
.#{$key}-#{$item-key} {
@each $property in $properties {
#{$property}: $item-value !important;
}
}
}
@debug $key; // 配合npx dart-sass test.scss 可以打印key值
}
.test-#{$key} {
$value: 0;
}
.p-#${key} {
padding: $value;
}