SCSS/SASS:如何动态生成一个以逗号分隔的类的列表

前端之家收集整理的这篇文章主要介绍了SCSS/SASS:如何动态生成一个以逗号分隔的类的列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用SSS的SCSS语法来创建动态网格系统,但我遇到了障碍。

我试图使网格系统完全动态,像这样:

  1. $columns: 12;

然后我创建列如下:

  1. @mixin col-x {
  2. @for $i from 1 through $columns {
  3. .col-#{$i} { width: $column-size * $i; }
  4. }
  5. }

其中输出

  1. .col-1 {
  2. width: 4.16667%;
  3. }
  4.  
  5. .col-2 {
  6. width: 8.33333%;
  7. }
  8. etc...

这很好,但我想做的下一步是动态生成一个列表类的长列表,以逗号分隔,基于选择的$列数 – 例如我想它看起来像这样:

  1. .col-1,.col-2,.col-3,.col-4,etc... {
  2. float: left;
  3. }

我累了这个:

  1. @mixin col-x-list {
  2. @for $i from 1 through $columns - 1 {
  3. .col-#{$i}-m { float: left; }
  4. }
  5. }

输出是这样的:

  1. .col-1 {
  2. float: left;
  3. }
  4. .col-2 {
  5. float: left;
  6. }
  7. etc...

我有点停留在这里的逻辑以及所需的SCSS语法创建这样的东西。

有没有任何想法?

谢谢

解决方法

我想你可能想看看@extend。如果你设置了像这样:
  1. $columns: 12;
  2.  
  3. %float-styles {
  4. float: left;
  5. }
  6.  
  7. @mixin col-x-list {
  8. @for $i from 1 through $columns {
  9. .col-#{$i}-m { @extend %float-styles; }
  10. }
  11. }
  12.  
  13. @include col-x-list;

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

  1. .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 {
  2. float: left;
  3. }

@extend in the docs

希望这可以帮助!

猜你在找的CSS相关文章