我正在line-height
Sass mixin中计算不同的s,以确保不同的元素遵守垂直节奏。我现在$vertical-rhythm-base
是8px
。
某些浏览器(至少是Chrome)似乎没有真正意义上的价值,而是在1.33333
使用23px
而不是所期望的24px
。因此,我尝试在我的mixin中更正该值:
$vertical-rhythm-base: 8px
=calculateLineHeight($itemFontSize)
$lineHeightBase: $vertical-rhythm-base * 3
$itemLineHeight: (ceil($itemFontSize/$lineHeightBase)*$lineHeightBase)/$itemFontSize
// fix miscalculation for this value since browsers resort to 23px
// instead of 24px in the current setup.
@if $itemLineHeight == 1.33333
$itemLineHeight: 1.3334
line-height: $itemLineHeight
.someElement
+calculateLinHeight(18px)
font-size: 18px
这似乎不起作用,因为应该得到line-height: 1.33334
静止的物品line-height: 1.33333
。
我不明白这里出了什么问题。更改@if
为使用=
而不是会==
导致分配line-height: 1.33334
给所有内容,而不是正确地进行计算。
萨斯不进行四舍五入,直到之后的比较已经完成,现在是时候生成输出。您的变量仍然包含重复的小数,即使看起来没有。如果要检查是否相等,则必须将重复值与重复值进行比较:
$foo: 4 / 3;
@debug $foo == 1.33333; // false
@debug $foo == 4 / 3; // true
请注意,如果Sass在比较时而不是之后进行四舍五入,则只有在使用默认精度设置5时,您的if语句才会评估为true(有许多Sass库需要更高的精度设置,我在上面运行了代码,精度为10)。另请注意,Sass的默认精度之前已更改过一次,将来可能会再次更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句