在 Sass 中有没有办法用连字符拆分变量/类的列表?
这是一个模糊的问题标题,所以我最好展示我正在努力实现的目标。
在下面的示例中,我尝试创建一些可以应用于 HTML 元素的实用程序类,以帮助处理垂直节奏。
例如,我可能想给一个元素一个与我的垂直节奏策略一致的小边距,因此我将添加类 .mts(代表 margin-top-small)。
然后,我想针对每个媒体查询输出这些实用程序类的版本,以进行细粒度控制,例如,我可能想要一个类.m-t-s-768
,当最小视口宽度为 768 像素时,该类将添加一个小的上边距。
我在下面实现了这一点,但这是一种非常冗长且重复的方式。任何人都可以提出更简洁的方法吗?
Variables
––––––––––
$mediaQueries-px:
640,
768,
1024
;
$s: 20px; /* FYI I've simplified these examples for the sake of demonstration, normally I use something like ($baseLineHeight / 1.5) + rem */
$m: 50px;
$l: 60px;
Creating the classes
–––––––––––––––––––––
.m-t-s {
margin-top: $s;
}
/* Create versions for each defined media query */
@each $mediaQuery in $mediaQueries-px {
@media screen and (min-width: ($mediaQuery / 16px)) {
.m-t-s-#{$mediaQuery} {
margin-top: $s;
}
}
}
.m-t-m {
margin-top: $m;
}
/* Create versions for each defined media query */
@each $mediaQuery in $mediaQueries-px {
@media screen and (min-width: ($mediaQuery / 16px)) {
.m-t-m-#{$mediaQuery} {
margin-top: $m;
}
}
}
这也重复.m-t-l
了(margin top large),然后它继续填充类(例如.p-t-s
等等),所以它变成了一个很长的实用程序类列表。