【问题标题】:Decimal places breaking @while in Sass [duplicate]在Sass中打破@while的小数位[重复]
【发布时间】:2015-06-24 16:08:51
【问题描述】:

尝试使用以下代码创建一些类来定义不透明度:

$i : 0;
@while $i <= 1 {
  .opacity-#{$i*100} {
    opacity: $i !important;
  }
  $i : $i + 0.1;
}

但我收到以下错误:

“.opacity-30.”后的 CSS 无效:预期的类名是“0”

看起来它在一段时间后添加了一个句号……不确定是什么原因造成的。

使用 Sass 3.4.14

使用指南针

有什么想法吗?

谢谢!

【问题讨论】:

标签: sass compass-sass


【解决方案1】:

您似乎需要对类名中的数字进行四舍五入:如果您打印/* #{$i*100} */,编译器将同时计算30.090.0100.0

所以你可以使用round() 函数 (reference) 去除任何小数

$i : 0;
@while $i <= 1 {

   /* #{$i*100} */
  .opacity-#{round($i*100)} {
    opacity: $i !important;
  }

  $i : $i + 0.1;
}

结果输出(在 sassmeister 上测试)是

/* 0 */
.opacity-0 { opacity: 0 !important; }

/* 10 */
.opacity-10 { opacity: 0.1 !important; }

/* 20 */
.opacity-20 { opacity: 0.2 !important; }

/* 30.0 */
.opacity-30 { opacity: 0.3 !important; }

/* 40 */
.opacity-40 { opacity: 0.4 !important; }

/* 50 */
.opacity-50 { opacity: 0.5 !important; }

/* 60 */
.opacity-60 { opacity: 0.6 !important; }

/* 70 */
.opacity-70 { opacity: 0.7 !important; }

/* 80 */
.opacity-80 { opacity: 0.8 !important; }

/* 90.0 */
.opacity-90 { opacity: 0.9 !important; }

/* 100.0 */
.opacity-100 { opacity: 1.0 !important; }

【讨论】:

  • 太棒了!这就像一个魅力。谢谢...这让我很头疼。
猜你喜欢
  • 2016-08-06
  • 2015-07-06
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
相关资源
最近更新 更多