【问题标题】:Efficient SASS for loops高效的 SASS 循环
【发布时间】:2019-01-09 21:42:13
【问题描述】:

我目前有一些像这样的手工编码的 SASS;

.tl1 td, .tl1 /deep/ th,
.tl2 td, .tl2 /deep/ th,
.tl3 td, .tl3 /deep/ th,
.tl4 td, .tl4 /deep/ th,
.tl5 td, .tl5 /deep/ th,
....
{ text-align: left; }

我正在尝试将其重构为一个 SASS for 循环,但是,如果不对每一行进行新的声明,尚不清楚如何做到这一点。

IE - 这个 SASS 循环;

@for $i from 1 through 50 {
  .tl#{$i}  td,  .tl#{$i}  /deep/ th {
    text-align: left;
  }
}

使每个语句原子化,就像这样;

.tl1 td, .tl1 th 
{
  text-align: left;
}
.tl2 td, .tl2 th 
{
  text-align: left;
}
.tl3 td, .tl3 th 
{
  text-align: left;
}
...

有没有办法将所有选择器组合在一起,就像手动编码的例子一样?

【问题讨论】:

  • 任何 CSS minifier 都会为你分组这些选择器,所以在生产风格中不会有重复

标签: sass


【解决方案1】:

在循环中使用@extend 将具有相同值的不同规则分组。

%text-left{
  text-align: left;
}

@for $i from 1 through 50 {
  .tl#{$i}{
    td, th, /* deep */ th {
      @extend %text-left;
    }
  }
}

【讨论】:

  • 太棒了,这完美!我现在已经阅读了关于@extend 的内容,这很有意义——谢谢你教我一些新东西! :)
  • @extend 很强大! @McStrudel 谢谢!
猜你喜欢
  • 2016-01-03
  • 2017-04-03
  • 2012-07-31
  • 1970-01-01
  • 2012-03-19
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多