如何在CSS变量中强制整数?

时间:2017-06-13 14:34:38

标签: css sass css-variables

请原谅我,如果这是一个简单的问题,但我在CodePen上与此斗争并且不知道发生了什么。

我有代码:

:root {
  --ile: 10;
}
@for $i from 0 to (var(--ile)) { }

问题是Codepen声明var( - ile)不是一个整数(呵呵?),即使它显然是(它没有单位,因为它不是10.0,它不能是一个浮点数)。 我错过了什么?我试图在网上查看CSS规范和各种示例,并使用数字作为变量是合法的,如果10不是整数,如何强制转换为整数?

2 个答案:

答案 0 :(得分:1)

规范允许使用自定义属性值作为数值。

但是var()表达式出现的上下文根本不是CSS。这是Sass。出于显而易见的原因,规范不包括非标准语法或预处理器。假设var()表达式在该上下文中起作用是不合理的。

实际上,自定义属性仅适用于属性声明。他们在其他任何地方都无法工作规范说明了here

  

可以使用var()函数代替元素上任何属性中值的任何部分。 var()函数不能用作属性名称,选择器或属性值之外的任何其他内容。 (这样做通常会产生无效的语法,或者其含义与变量无关的值。)

由于这是一个Sass循环,我认为没有任何理由不使用Sass变量:

$ile: 10;

@for $i from 0 to $ile { }

答案 1 :(得分:0)

我希望有一种将CSS变量转换为整数的方法,但遗憾的是没有。 但是,即使存在,由于SASS开发人员实施的编译决定,这可能也不起作用。

如果您的CSS变量确实打算作为 static 变量使用,并且您知道它永远不会改变,或者如果这样,则对特定的用例无关紧要,那么我建议这样做:

$ile: 10;

:root {
  --ile: #{ile};
}
@for $i from 0 to $ile { }