我尝试创建一些匹配"几乎"的相对字体大小值。像素大小:
html { font-size: 62.5%; }
$font-10px: 1em/1.1em;
$font-11px: 1.1em/1.1em;
$font-12px: 12em/11em;
.x10 { font-size: $font-10px; }
.x11 { font-size: $font-11px; }
.x12 { font-size: $font-12px; }
但是,这个sass snipet的输出是:
.x10 {
font-size: 0.90909;
}
.x11 {
font-size: 1;
}
.x12 {
font-size: 1.09091;
}
如您所见,单位(em
)已被剥离。
这会导致值不正确。
我应该如何声明我的变量包含正确的单位?
答案 0 :(得分:1)
如果长度使用相同的单位,则将一个长度除以另一个长度始终会导致单元被移除。所以你的选择是:
1.1em / 1.1
1.1em / 1.1em * 1em
1em
答案 1 :(得分:0)
将PX添加到变量的末尾,并使用#{}包围变量。这称为interpolation #{ },并将变量视为普通css。插值也有助于消除数量和测量单位之间的任何空格:
$base-font-size: 16;
body { font-size: (62.5% * base-font-size); }
$font-10px: 1em/1.1em;
$font-11px: 1.1em/1.1em;
$font-12px: 12em/11em;
.x10 { font-size: #{$font-10px}px; }
.x11 { font-size: #{$font-11px}px; }
.x12 { font-size: #{$font-12px}px; }
结果:
.x10 {
font-size: 0.90909px;
}
.x11 {
font-size: 1px;
}
.x12 {
font-size: 1.09091px;
}
由于您在SA演讲中提到了可访问性,我建议您将此blog post by Hugo Giraudel中的一个mixin添加到项目中以允许使用REM单元,同时还为旧浏览器提供向后兼容性。