我正在使用 Ems 单位指定字体大小,它们是相对于父容器而言的。我有多个子元素,在进行计算时不想每次都重复父级尺寸。因此我有:
@articleFontSize: 21/16;
如果我进一步使用:
font-size: @articleFontSizeem;
如你所料,我收到了“变量@articleFontSizeem未定义”的错误信息。
如果我进行插值:
font-size: @{articleFontSize}em;
然而它再次拒绝编译,只显示一个简单的“语法错误”。
font-size: @articleFontSize~"em";
这段代码可以编译 - 但我得到的输出结果是这样的:
font-size: 1.3125 em;
即在单位前添加一个空格,这样浏览器就会忽略它们。
我正在Mac上运行LiveReload(2.0 beta 5),设置显示使用“系统Ruby 1.8.7”进行编译。
更新的解决方案:
a. 添加正确单位的零数量:
font-size: 0em + @articleFontSize;
b. (我之前提出的替代方法 - 使用函数):
.rFont(@target, @context) {
@ratio: @target/@context;
font-size: ~"@{ratio}em";
}
被调用时:
.rFont(11,@articleFontSize);
输出(正确,注意不要有多余的空格):
font-size: 0.7063571428571428em;
我没想到把@{ratio}放在波浪号加引号里仍然会扩展它。但它可以工作(几乎没有其他方法可以)。这个问题有所帮助: 在less(css)中连接值而不留空格
"@ {my-var}"
。只有这个出现在规则中,例如.hidden&::before { content: "@{my-var}"; display: block; }
。明白了,谢谢。 - WoodrowShigeru