简单的解释是,浏览器在内部使用整数作为边框宽度(或者至少公开它们)。
一个例子是 Chrome (Chromium) 的源代码,它在文件 ComputedStyle.h 中将所有边框宽度定义为整数 ():
我们对此无能为力why:关于边框宽度的信息很少CSS 背景和边框的 W3C 规范 http://www.w3.org/TR/css3-background/#the-border-width。它仅说明line-width
没有单位,关于如何处理该单位的类型或定义,除非它是绝对的(非负):
值:
[...]
计算值:绝对长度;如果边框样式为“无”或“隐藏”,则为“0”
And:
“薄”、“中”、“厚”对应的长度不是
指定的,但值在整个文档中是恒定的并且很薄
≤ 中等 ≤ 厚。例如,UA 可以使厚度取决于
‘medium’字体大小:当‘medium’时,一种选择可能是 1、3 和 5px
字体大小为 17px 或更小。不允许使用负值。
找到了同样的信息在盒子模型文档中 http://www.w3.org/TR/CSS2/box.html#value-def-border-width没有新的细节。
As all值最终成为像素值(因为我们的屏幕是像素设备)通过的数字em, vw, %当涉及到边框宽度时,等等似乎最终成为一个整数,而不考虑子像素化。
在使用整数作为边框宽度的浏览器中,甚至变换(缩放)似乎都不会影响这一点。
In the end, it seems to be up to the browser vendor how to treat these values (it could simply be aesthetic reasons for doing so, performance, .. we can only guess..).