var(--x)在calc()中加减失效,因无单位变量导致量纲不明,浏览器无法判断结果类型而静默丢弃;必须让--x自带单位(如20px、0px)或用乘法升格(如var(--x)*1rem)。
里
报错或静默失效,根本不是浏览器兼容性问题,而是变量值类型不合法——
必须带单位(含
),或在
内用乘法“升格”为带单位数值。
为什么 var(--x) 在 calc() 中直接参与加减会报 invalid value
浏览器无法推断两个无单位变量相加的结果该是什么类型:
中,如果
、
,那结果是
?
?还是
?解析器拒绝猜测,整条声明被丢弃。
→
❌ 失效(
展开为
,变成
,无单位)
→
✅ 正确(
展开为
)
→
✅ 用
显式赋予单位
0 必须写成 0px / 0rem / 0%,不能只写 0
是唯一看起来“不用单位”的数字,但它在
中反而最危险——它没有量纲,浏览器连是否参与长度计算都无法判断。
→
❌ 静默失效
→
✅
→
✅ 补单位后可进
乘除运算对变量单位有硬性要求
的乘除不是“任意混算”,右侧操作数必须是纯数字(无单位),左侧可以是带单位值;反过来就非法。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
✅ 前提是
❌ 右侧带单位,语法错误
✅
(纯数字)才合法
❌ 若
,除数带单位,直接报错
预处理器中变量未插值会导致单位丢失
Sass/Less 编译阶段若没显式插值,
或
就只是字符串占位符,不会变成 CSS 可识别的值,最终生成的
里可能只剩裸数字。
Sass 错误:
→ 可能编译成
Sass 正确:
(且
)
Less 错误:
Less 正确:
(双引号+波浪号强制转义)
真正容易被忽略的是:你改了变量定义,却忘了检查所有引用它的
是否仍满足空格、单位、插值三重约束——尤其当变量被多个组件复用时,一处漏掉,全链路失效。
calc()var(--x)--x0calc()var(--a) + var(--b)--a: 10--b: 2030px30%30em--gap: 20width: calc(100% - var(--gap))var(--gap)"20"100% - 20--gap: 20pxwidth: calc(100% - var(--gap))var(--gap)"20px"--base: 2font-size: calc(var(--base) * 1rem)* 1rem0calc()--offset: 0left: calc(var(--offset) + 10px)--offset: 0pxleft: calc(var(--offset) + 10px)--min: 0width: clamp(var(--min) * 1px, 50%, 100%)clamp()calc()width: calc(var(--width) * 2)--width: 200pxwidth: calc(var(--width) * 2px)height: calc(100vh / var(--rows))--rows: 4height: calc(100vh / var(--rows))--rows: 4px$gap@gapcalc()width: calc(100% - $gap)calc(100% - 20)width: calc(100% - #{$gap})$gap: 20pxwidth: calc(100% - @gap)width: calc(~"100% - @{gap}")calc()