网站开发公司售后服务网店推广方式有哪些
Sass 还可以这么玩 —— Sass 批量生成 padding
和 margin
有时候,我们需要为上下左右批量添加不同尺寸的 padding 和 margin,比如 .m-0, m-1, m-2, ..., .mt-0, .mt-1,...
,我们可以自己写这些类,但这会很繁琐且易出错。
幸运的是,我们可以使用 Sass 快速生成。
Sass 是一个 css 预处理器。
让我们看一个简单的例子,在 0em
到 7em
的所有方向上创建 padding
和 margin
。
-
定义列表
首先定义两个列表,一个包含 em 范围,另一个包含方向字符串。
$ems: 0, 1, 2, 3, 4; $directions: "", "-bottom", "-top", "-left", "-right";
在 Sass 中,列表变量定义方式为:
$variableName: itemOne,itemTwo;
接下来,嵌套循环两个列表。这样,内层循环就可以获取到
$em 和 $dir
@each $em in $ems{@each $dir in $directions {} }
-
生成结果
-
利用
str-slice
函数获取类名方向注意 sass 中列表和字符串的起始位置为 1 而不是大多数语言中的 0
$dir-alias: str-slice($dir, 2, 2);
这样就可以获取到
b, t, l, r
-
变量使用
.m#{$dir-alias}-#{$em} {margin#{$dir}: $em + em; } .p#{$dir-alias}-#{$em}{padding#{$dir}: $em + em; }
sass 变量在字符串中需要使用
#{变量}
才能生效,这样,运行 sass 代码,就可以得到如下结果,不再需要自己手写,真香.m-0 {margin: 0em; }.p-0 {padding: 0em; }.mb-0 {margin-bottom: 0em; }.pb-0 {padding-bottom: 0em; }.mt-0 {margin-top: 0em; }.pt-0 {padding-top: 0em; }.ml-0 {margin-left: 0em; }.pl-0 {padding-left: 0em; }.mr-0 {margin-right: 0em; }.pr-0 {padding-right: 0em; }.m-1 {margin: 1em; }.p-1 {padding: 1em; }.mb-1 {margin-bottom: 1em; }.pb-1 {padding-bottom: 1em; }.mt-1 {margin-top: 1em; }.pt-1 {padding-top: 1em; }.ml-1 {margin-left: 1em; }.pl-1 {padding-left: 1em; }.mr-1 {margin-right: 1em; }.pr-1 {padding-right: 1em; }.m-2 {margin: 2em; }.p-2 {padding: 2em; }... /* There should be 80 Classes like this */
-
-
完整 sass 代码
$ems: 0, 1, 2, 3, 4; $directions: "", "-bottom", "-top", "-left", "-right";@each $em in $ems{@each $dir in $directions {$dir-alias: str-slice($dir, 2, 2);.m#{$dir-alias}-#{$em} {margin#{$dir}: $em + em;}.p#{$dir-alias}-#{$em}{padding#{$dir}: $em + em;}} }