为什么渲染像素与真实像素不同
Why do rendered pixels differ from real pixels?
在我的HTML中,我有一个固定宽度的<div>
(称之为面板),其中包含一些文本;该文本在随附的CSS中设置为font-size: 25px; line-height: 25px;
。碰巧文本最终为 36 行。
鉴于所有边距、填充和边框均为零,您会期望面板的高度是 36 * 25px = 900px
,这实际上是我在 Firefox 中找到的,使用 DOM 的 getBoundingClientRect()
方法。
但是,在谷歌浏览器中,我得到了不同的数字; 看起来面板只有892.7999877929688px高,而线条高24.799999660915798px高。不过,将这两个数字相除仍然得到 36。看起来 CSS 中设置的标称像素与 getBoundingClientRect()
报告的实际像素之间存在缩放比例;就我而言,这是每个真实像素的标称值 1.0080645299120465。
另一个证据来自在nwjs应用程序中运行的Chromium,我最初观察到了这种差异。在我的测试中,它显示出与Chrome中不同的比率。现在,在我的测试过程中的某个时候,Chromium 报告的像素突然跳转到 Firefox 中报告的整数值;我不确定我做了什么来实现这一目标。
可以预期,分数比在某种程度上与页面缩放有关;毕竟,在非常小的尺寸下,Chrome和Chromium会重排文本(有时还会出错)。事实上,改变Chrome的放大会导致不同的比例,而使Chrome放大到最大值将使比例平坦地达到1。尽管如此,我的 Chromium 应用程序没有放大到最大值,仍然有一个分数比例。 测试中的整数像素比率,但在实际应用中的小数值。
就我目前所知,为了获得比率,我所能做的就是用 JavaScript 进行声音、一致的盒子尺寸测量,就是设置一个已知大小的盒子并测量它。
我仍然想知道观察到的行为的来源是什么。有没有这方面的报道?这是渲染器的有意行为还是紧急行为?开发人员曾经讨论过吗?是否有获取比率的 API?
我已经在 https://gist.github.com/loveencounterflow/d8c20b9021d2ab3f573a 的要点上放置了一些代码以简化测试。
某些字体无法以您要求的确切大小呈现,并且字体具有间接影响报告的实际大小的属性。如果您想要相同的行为,也许您必须导入自己的字体以实现类似的渲染交叉浏览。我在IE和Chrome上工作时遇到了类似的问题。
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- javascript mootools平滑滚动'x'像素数量
- 逐像素碰撞检测弹球
- 获取图像的平均外部像素颜色
- 如何根据分辨率添加像素
- 仅当窗口宽度>940像素,无论是通过页面加载还是调整大小
- 使用画布在秒内逐像素显示图片
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 如何将像素添加到元素的当前位置
- GridStack项的高度和宽度(以像素为单位)
- 在用户用动画滚动175像素后缩小固定的Div
- 为什么渲染像素与真实像素不同
- 有没有一种方法可以在没有视口元标记的情况下获得硬件像素中的真实视口大小
- 计算给定字符串的真实像素宽度