По-моему, вы не очень хорошо понимали разницу между картами и списками.
Список представляет собой array
значений:
$breakpoints: (
564,
768,
992,
1200
);
или
$breakpoints: 564, 768, 992, 1200;
или
$breakpoints: 564 768 992 1200;
Так что этот @return map-get($m, $v);
всегда будет приводить к ошибкам, поскольку $breakpoints
не является картой.
Карты имеют ключи и значения:
$breakpoints: (
xs: 564,
md: 768,
lg: 992,
xl: 1200
);
Чтобы помочь вам в вашем проекте, может быть, лучше написать карту вложенных карт:
$myMap:(
xs:(
min-width: 564px,
width: 200px,
font-size: 20px
),
md:(
min-width: 768px,
width: 300px,
font-size: 30px
),
lg:(
min-width: 992px,
width: 400px,
font-size: 40px
),
xl:(
min-width: 1200px,
width: 500px,
font-size: 50px
)
);
Это более ясно, корреляция для каждого значения.Теперь мы можем написать @mixin, чтобы получить эти значения:
@mixin medias($map, $key) {
@each $keyMap, $valueMap in $map {
@media all and (min-width: map-get($valueMap, min-width)) {
#{$key}: map-get($valueMap, $key);
}
}
}
И теперь мы можем включить его!
@include medias($myMap, width);
Это результат, который вы просили:
@media all and (min-width: 564px) {
width: 200px;
}
@media all and (min-width: 768px) {
width: 300px;
}
@media all and (min-width: 992px) {
width: 400px;
}
@media all and (min-width: 1200px) {
width: 500px;
}
Я разместил ваш новый файл SASS, я думаю, что он гораздо более понятен
$myMap:(
xs:(
min-width: 564px,
width: 200px,
font-size: 20px
),
md:(
min-width: 768px,
width: 300px,
font-size: 20px
),
lg:(
min-width: 992px,
width: 400px,
font-size: 20px
),
xl:(
min-width: 1200px,
width: 500px,
font-size: 20px
)
);
@mixin medias($map, $key) {
@each $keyMap, $valueMap in $map {
@media all and (min-width: map-get($valueMap, min-width)) {
#{$key}: map-get($valueMap, $key);
}
}
}
@include medias($myMap, width);