【发布时间】:2013-10-05 22:30:44
【问题描述】:
我正在使用 SASS 的 SCSS 语法来创建动态网格系统,但我遇到了障碍。
我正在尝试像这样使网格系统完全动态:
$columns: 12;
然后我创建这样的列:
@mixin col-x {
@for $i from 1 through $columns {
.col-#{$i} { width: $column-size * $i; }
}
}
哪些输出:
.col-1 {
width: 4.16667%;
}
.col-2 {
width: 8.33333%;
}
etc...
这很好用,但是我接下来要做的是根据选择的 $columns 的数量动态生成一长串用逗号分隔的列类 - 例如,我希望它看起来像这样:
.col-1,
.col-2,
.col-3,
.col-4,
etc... {
float: left;
}
我已经厌倦了:
@mixin col-x-list {
@for $i from 1 through $columns - 1 {
.col-#{$i}-m { float: left; }
}
}
但输出是这样的:
.col-1 {
float: left;
}
.col-2 {
float: left;
}
etc...
我对这里的逻辑以及创建这样的东西所需的 SCSS 语法有点卡住了。
有人有什么想法吗?
【问题讨论】:
-
出于好奇:“@mixin col-x { @for $i 从 1 到 $columns { .col-#{$i} { width: $column-size * $i; } } }" 你能解释一下这段代码究竟做了什么吗?
-
@Mag 它遍历我设置的列数,例如$列:6;并创建一个名为 col-1、col-2 等的类。所以如果我想要 6 列,它只会循环到 col-6。然后它给每个列的宽度(100% 除以 $columns 的数量,然后乘以它的列号),例如col-3 = (100% / 6) * 3 = 50%。