我在自己的工作中注意到,当3个流体柱的宽度设置为33.333%而不是33%时,它们填充父元素的效果要好得多。我还注意到,在研究各种CSS框架(例如bootstrap.css)时,它们的列宽度指定了14位小数!这看起来既过分又聪明……但我不知道是哪一个
那么有这么多小数位的价值/好处是什么呢?从我收集到的信息来看,关于你是否应该避免或利用小数点,有一个公开的辩论,我想知道我是否应该对此感兴趣,或者不用担心。
在某些情况下是必需的。我在一个网站上工作,使用Twitter Bootstrap,其中有6个div拉伸网站的全宽度。如果我把每个的宽度设为16.66%,最后会留下一个明显的空隙,如果我把宽度设为16.67%,其中一个div会被推到下面的行上。这意味着让div填充整个空间,我必须将宽度设置为16.6667%,这在Chrome和Firefox中完美地工作,但似乎Safari和IE将小数点降低到2位,所以我在使用它们时留下了一个空白。因此,有时它可能看起来过多,但有时它实际上是需要的。
戴夫你可能会认为小数点后4位对于当前的技术来说是合理的。
使用width: 33.33%
为3色就可以了——即使是4k屏幕也不会显示间隙(4096px = 4095.5 px的99.99%,四舍五入为4096px,所以没有间隙)
但其他比率可能。
4k屏幕上的1个像素是1/4096 = width: 0.00024%
,所以4dp可以保证没有间隙。8k的屏幕也是安全的……事实上,如果你的尺寸精确到4dp,那么只有20,000px宽的屏幕才有可能出现间隙。
......浏览器支持当然允许!有些人已经注意到有些浏览器截断到2页,
虽然浏览器的四舍五入可能不同,但实际上没有必要使用14位小数,因为无论使用14位小数还是3位小数,最终转换成像素的值都可能是相同的。
小数点后14位的原因很可能是因为开发人员正在使用css预处理器(如less),其中div的宽度计算方式为
width: 100% / @columns;
它们的预处理器可能只是使用它计算的完整浮点数作为实际的css值,包括它的所有小数点,而不是截断它们。
因为33 ≠ 33.33333
。
如果你设置3个div
为33%,将有1%的剩余填充。这是合乎逻辑的
写这个,因为其他答案并没有真正使用任何具体的事实或数据。
制作Sass的人必须实际实现这个特性,这可能是一个很好的例子。
node-sass的默认精度级别是小数点后5位,这显然是他们做出的决定,因为JS浮点数可以超过5位。
https://github.com/sass/node-sass精度
dart-sass项目还提到:
Dart Sass默认为所有现有浏览器提供足够高的精度,使其可自定义将大大降低代码的效率。
5个小数点似乎足够了,因为浏览器视口通常以千为单位(<10^4),亚像素精度不超过一个小数点(<10^(-1))
10^4/10^(-1) = 10^5,所以小数点后5位应该足够了
Bootstrap 4.3使用6位小数。这与float32标准是内联的。(32位标准)