【发布时间】:2019-01-08 10:59:22
【问题描述】:
如何解决单位不兼容的问题?
@mixin square-size($size, $min: $size, $max: $size) {
$clamp-size: min(max($size, $min), $max);
width: $clamp-size;
height: $clamp-size;
}
输入是:
@include square-size(10vw, 40px, 70px);
问题:
Incompatible units: 'vw' and 'px'.
node_modules\@ionic\app-scripts\dist\util\helpers.js:253.replace(/&/g, '&')
但如果我使用calc(1vw - 1px),它就可以工作。 (没有单位问题)。
例如max(calc(1vw - 1px)) 不起作用。因为no number for max。
在我的例子中,我想要一个 mixin 来调整元素的大小。包括夹子。
min-width、max-width 等不起作用。它将是一个矩形或一个椭圆。因为它不保持纵横比。
我想要一个具有动态size 但具有min 和max 大小的元素。
我了解动态单元vw(视口)必须在 sass 编译后存在。因此,无法将该值转换为固定单位。
但是没有办法吗?
【问题讨论】:
-
由于 Sass 是在服务器上编译的,而不是在浏览器中编译的 -
vw(和其他相关的)单位不能转换成东西,你可以用它来做数学运算。calc()由浏览器计算,而不是 Sass。因此,您需要获取绝对值以使用 Sass 执行计算,或者将您的方程转换为calc()表达式以在浏览器中计算。
标签: sass type-conversion viewport-units