【发布时间】:2014-10-14 09:13:55
【问题描述】:
首先,我知道要将无单位值转换为有单位的值,我可以将无单位值乘以单个单位:
$value: 25 * 1px; // 25px
但是我想知道当单元是动态的时是否有任何方法可以做到这一点。
$unit: rem;
$value: 23;
.Box {
// Try interpolation
$united-value: #{$value}#{$unit};
value: $united-value; // Appears to be correct
// Check it is actually a number using unitless
check: unitless($united-value); // $number: "23rem" is not a number for `unitless'
}
显然,如果我要创建 $unit 1rem 的值,我可以像我的第一个示例一样乘以,但是有没有办法用裸单位值来做到这一点。
萨斯迈斯特here
[编辑] 正如@zessx 正确指出的那样,CSS 不关心类型,并且在这种情况下会以相同的方式处理字符串和数字值。但是,一旦附加了单位,我需要对值执行操作。
[编辑] 我不知道如何才能更清楚。我不想要/不需要一个在底层使用乘法的函数。我已经知道它是如何工作的以及如何去做。如果有一种方法可以获取一个无单位的值和一个单位并从中得出一个统一的数字,我很感兴趣。
有没有办法将px 和22 生成22px 这是一个数字并且可以对其进行数学运算?任何向我展示如何使用1px 和22 并做同样事情的答案都不是在回答我要问的问题。
【问题讨论】:
-
由于您在
$united-value中使用了插值,因此该变量的类型是字符串,但您不能将unitlesssass 函数与字符串一起使用。因此,实现目标的唯一方法是将$unit设置为1rem。为什么不想将$unit设置为1rem?看看这个sassmeister -
@AlexGuerrero 这是一个更大的库的一部分,它使用了大量的验证和动态插值。正如我认为我明确表示的那样,我不想成倍增加。我目前需要两个列表 - 一个普通单位和一个单值单位。我正在尝试消除对第二个列表的需求。
-
您还没有明确说明为什么涉及乘法是不可接受的。就目前而言,这是您需要与 Sass 的维护者讨论的问题。你知道他们会告诉你什么吗? Please. Just use unit based arithmetic.
-
@cimmanon 上下文与什么有什么关系?我故意从问题中删除了所有上下文以使其简单。如果答案是你做不到,那就是答案。
-
@Pedr 你没有解释为什么乘法是不可接受的。
标签: sass multiplication units-of-measurement