У меня есть следующий микссин SCSS, который генерирует классы CSS от .grid1
до .grid12
:
$columns: 12;
@mixin repeat($character, $n) {
$c: "";
@for $i from 1 through $n {
$c: $c + $character;
}
-ms-grid-columns: unquote($c);
}
// classes for defining number of equally sized (sub-)grid columns
@mixin grid-x {
@for $i from 1 through $columns {
.grid#{$i} {
@include repeat(" 1fr", $i);
}
}
}
@include grid-x;
Сгенерированные CSS-классы выглядят так, используя libsass:
.grid1 {
-ms-grid-columns: 1fr;
}
.grid2 {
-ms-grid-columns: 1fr 1fr;
}
.grid3 {
-ms-grid-columns: 1fr 1fr 1fr;
}
...
Поскольку IE 11 не поддерживает grid-gap
Я хочу вставить столбцы с пропуском 20px между столбцами в поколении.
Ожидаемый результат будет выглядеть так:
// nothing changed for .grid1
.grid1 {
-ms-grid-columns: 1fr;
}
.grid2 {
-ms-grid-columns: 1fr 20px 1fr;
}
.grid3 {
-ms-grid-columns: 1fr 20px 1fr 20px 1fr;
}
...
Простое добавление столбцов 20px
в повторяющейся строке приводит к нежелательному трейлингу 20px
:
@include repeat(" 1fr 20px", $i);
Результаты в
.grid1 {
-ms-grid-columns: 1fr 20px;
} ^^^^
.grid2 {
-ms-grid-columns: 1fr 20px 1fr 20px;
}^ ^^^^
.grid3 {
-ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px;
} ^^^^
...
Есть идеи, как получить желаемый результат, используя миксины SCSS?
Для удобства тестирования просто приклейте миксин на sassmeister .