我正在使用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...

这个运行得很好,但是what I want to do next is dynamically generate a long list of column classes separated by commas based on the number of $columns chosen-例如,我希望它看起来是这样的:

.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语法有些困惑.

有没有人有什么 idea ?

推荐答案

我想你可能想看看@extend.如果你设置了如下内容:

$columns: 12;

%float-styles {
  float: left;
}

@mixin col-x-list {
  @for $i from 1 through $columns {
      .col-#{$i}-m { @extend %float-styles; }
  }
}

@include col-x-list;

它在CSS文件中应该呈现为:

.col-1-m, .col-2-m, .col-3-m, .col-4-m, .col-5-m, .col-6-m, .col-7-m, .col-8-m, .col-9-m, .col-10-m, .col-11-m, .col-12-m {
  float: left;
}

@extend in the docs美元.

Css相关问答推荐

在css网格中用一个锚标签(顶部/底部边距)包装图像?

用两步函数内插的css动画值

React Tabs 在 Tabs 之间垂直渲染标签内容

如何使用显示网格制作不同大小的列取决于元素的数量

使 MUI 自动完成打断长词以适合布局

通过css修改样式shadowroot元素

Icomoon:如何避免重复索引(具有相同内容 ID 的不同图标)?

普通流,流布局,块和内联布局有什么区别?

具有自动调整大小的自动填充行的 CSS 网格

将复选框对齐到中心

CSS如何防止键盘向上移动内容?

如何在连字符 (-) 等特殊字符后分词

如何让 Firefox 在文件更改时自动刷新?

Flexbox 列自底对齐

flex-wrap 如何与 align-self、align-items 和 align-content 一起使用?

Chrome 呈现 colored颜色 的方式与 Safari 和 Firefox 不同

删除行内块元素中大文本上方和下方的空白

通过 Bootstrap4 对列进行排序

HTML浮动右元素顺序

height: 100% 或 min-height: 100% 用于 html 和 body 元素?