浏览器渲染小数像素

浏览器是以 1 / 64 px 为单位而非整数 1px 来计算盒子尺寸与布局的,这使百分比、计算、小数点式的尺寸值成为可能,当然也会造成精度丢失。

这是因为 100px 宽的容器,内部有 6400 个 1 / 64px 的显示单位。66.5px 宽是占用 4256 个显示单位,33.5px 宽是 2144 个显示单位,4256 + 2144 = 6400,当然是可以塞进去的。虽然两个盒子最终会被渲染成  67px 与 33px 宽,但这并不是简单四舍五入的结果,而是图像引擎较为底层的处理。

如果像素宽度在乘以 64 倍后依然有小数点,那么不同浏览器会采用不同策略(向上或者向下取整)来判定实际的宽度,但一定会进行取整,因为这是最小的处理显示单位。

总之,渲染盒子尺寸的过程可以概括为:


在样式中设置尺寸(包括通过百分比、calc() 等计算后的)

将尺寸转换为 1 / 64px 的最小单位并取整——在这一步会有精度丢失

渲染实际尺寸——可以用 element.getBoundingClientRect() 来看到浏览器实际渲染时的尺寸。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,806评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,805评论 0 2
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,657评论 0 7
  • 下面我要讲的故事是从好友处听来的。 故事的主角是她高中时同班的一个女同学,女同学的父亲是小有成就的商人,教育女儿的...
    门前大桥下游过一群鸭阅读 369评论 0 2
  • 安娜的悲剧人生 虚伪的丈夫 无耻的情人
    FOREVER___XTX阅读 1,118评论 0 1