【问题标题】:scss providing css classes with . insidescss 为 css 类提供 .里面
【发布时间】:2020-05-27 21:00:02
【问题描述】:

我在 scss 中有一个 for 循环,我想输出如下内容:

.font-1.0em {font-size:1.0em} 
.font-1.1em {font-size:1.1em} 
.font-1.2em {font-size:1.2em} ....

我把scss写成这样

@for $i from 1 through 50 {
    $val: $i + em;

    $val2: $i / 10 + em;

    &.font-#{$val} {
        font-size: #{$val2} ;
    }
}

哪个输出

.font-10em {font-size:1.0em} 
.font-11em {font-size:1.1em} 
.font-12em {font-size:1.2em} ....

有没有办法解决这个问题?

【问题讨论】:

  • 有什么不满意的地方,是不是类名中的数字不是小数?此外,类名中的点是非常规的,需要转义 css 中的字符 - see this answer

标签: for-loop variables sass


【解决方案1】:

通过使用与$val2 相同的公式和$val 来解决您想要实现的目标应该相当容易

@for $i from 1 through 50 {
    $val: $i / 10 + em;

    $val2: $i / 10 + em;

    &.font-#{$val} {
        font-size: #{$val2} ;
    }
}

编译成

.font-0.1em {
    font-size: 0.1em;
}

.font-0.2em {
    font-size: 0.2em;
}

还是我错过了什么?

【讨论】:

  • 它不适用于所有 sass 实现,如果我尝试使用 dart-sass 而不是使用 libsass 进行编译,则会出现错误。
  • 我用scss编译的很好,可能是编译问题而不是实现问题。
  • 我相信你,在那种情况下你的解析器不允许它,所以要么得到不同的解析器,要么改变你消化最终数据的方式,你链接的解析器不喜欢变量中的点,所以没有修复它的空间很大。
猜你喜欢
  • 2019-08-27
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 2016-12-04
  • 2016-04-25
  • 1970-01-01
相关资源
最近更新 更多