使用字符串枚举作为地图 SCSS 的键
Using string enumeration as key of map SCSS
我已经创建了一些断点以在特定屏幕宽度上隐藏 nth-child
,我很想使用循环和映射使其更紧凑。单个媒体查询条件没问题,但我坚持创建地图,其中键可以是多个媒体查询条件,例如 @include media('<1000px', '>500px');
。当我得到正确的地图时,键可以是任何字符串,所以理论上可以另外引用这个条件枚举并在循环中取消引用它,但它不起作用。有人可以帮我吗?
@import "include-media";
$map: (
"'>500px', '<1000px'": '9',
"'<400px'": '7'
);
@each $condition, $child in $map {
@include media(unquote($condition)) {
:nth-child(n+#{$child}) {
display: none;
}
}
}
最初我试图用双引号引用一个字符串枚举以取消引用它并传递给 media
函数,但后来我意识到我的代码一切正常,发布在答案中,只是我不能通过一些参数作为带有字符串枚举的不带引号的字符串,这是不可能的。所以我正在寻找另一种存储条件补丁的方法,我想起了 SCSS 列表。这就是答案!
我不知道 SCSS 列表可以作为地图中的键,但这是。所以我只是将我需要的所有条件作为值放入键和子编号,然后遍历映射并通过解构将条件列表传递给 media
函数(我没有找到很多关于这个的信息运算符,不知道它是如何调用的:))。所以就这样结束了:
$map: (
('>500px', '<1000px'): 9,
('<400px'): 7
);
@each $conditions, $child in $map {
@include media($conditions...) {
:nth-child(n + #{$child}) {
display: none;
}
}
}
正在转换为
@media (min-width: 501px) and (max-width: 999px) {
:nth-child(n+9) {
display: none;
}
}
@media (max-width: 399px) {
:nth-child(n+7) {
display: none;
}
}
我已经创建了一些断点以在特定屏幕宽度上隐藏 nth-child
,我很想使用循环和映射使其更紧凑。单个媒体查询条件没问题,但我坚持创建地图,其中键可以是多个媒体查询条件,例如 @include media('<1000px', '>500px');
。当我得到正确的地图时,键可以是任何字符串,所以理论上可以另外引用这个条件枚举并在循环中取消引用它,但它不起作用。有人可以帮我吗?
@import "include-media";
$map: (
"'>500px', '<1000px'": '9',
"'<400px'": '7'
);
@each $condition, $child in $map {
@include media(unquote($condition)) {
:nth-child(n+#{$child}) {
display: none;
}
}
}
最初我试图用双引号引用一个字符串枚举以取消引用它并传递给 media
函数,但后来我意识到我的代码一切正常,发布在答案中,只是我不能通过一些参数作为带有字符串枚举的不带引号的字符串,这是不可能的。所以我正在寻找另一种存储条件补丁的方法,我想起了 SCSS 列表。这就是答案!
我不知道 SCSS 列表可以作为地图中的键,但这是。所以我只是将我需要的所有条件作为值放入键和子编号,然后遍历映射并通过解构将条件列表传递给 media
函数(我没有找到很多关于这个的信息运算符,不知道它是如何调用的:))。所以就这样结束了:
$map: (
('>500px', '<1000px'): 9,
('<400px'): 7
);
@each $conditions, $child in $map {
@include media($conditions...) {
:nth-child(n + #{$child}) {
display: none;
}
}
}
正在转换为
@media (min-width: 501px) and (max-width: 999px) {
:nth-child(n+9) {
display: none;
}
}
@media (max-width: 399px) {
:nth-child(n+7) {
display: none;
}
}