【问题标题】:Forcing Chrome for Windows to respect sub-pixel line heights强制 Chrome for Windows 尊重子像素行高
【发布时间】:2013-11-09 06:42:38
【问题描述】:

我遇到了一个棘手的 CSS 问题。由于网站“主题”的 CSS 是第三方的(无法更改,但我们可以用另一个样式表覆盖),并且页面上的所有内容都使用绝对定位进行布局和大小(无法更改)。

在这个第三方 CSS 的某个地方,我们有这样的声明:

body {
    line-height: 1.3;
}

页面上的div 具有14pxfont-size,使其行高为18.2px。这对于典型的网站来说很好。然而,由于一切都是绝对使用像素位置定位的,因此字体渲染差异正在发挥作用。具体来说,Windows 中的 Google Chrome 将这个line-height 向下舍入为18px。这意味着div 中的大块内容在 Windows 版 Chrome 中的呈现时间比在任何其他浏览器中要短得多。所有其他浏览器似乎都支持亚像素行高。

有什么方法可以强制 Windows 版 Chrome 尊重亚像素行高,这样它的呈现方式就不会与其他浏览器有很大不同?

更新

Here's a JSFiddle 展示了差异。如果您比较 Chrome for Windows 和 Firefox for Windows 中的高度,您会发现每行存在0.2px 的差异。

【问题讨论】:

  • 您确定其他浏览器将 18.2 舍入到 18 吗?
  • 我检查了 Chrome 和 Firefox 上的开发工具。 Firefox 显示 18.2 像素,但我猜在光栅化字体时,所有内容都会在整个像素上对齐。
  • 它们的渲染肯定不同。每行0.2px 累加成多行。
  • 查看我的更新,@kleinfreund。您可能看不到差异,因为 0.2px 很小,但在我的情况下,这会产生明显的差异,因为有很多行。
  • 尽可能不要使用像素。

标签: css google-chrome


【解决方案1】:

我要做的是将line-height 更改为乘以整个像素的东西。在你的情况下:

line-height: 1.2857142857142857142857142857143; /* = 18 / 14 */

这只会稍微改变输出,并产生跨浏览器兼容的结果。

我已经用你的小提琴在 Windows 上的 Chrome 和 Firefox 上对其进行了测试,它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2018-06-09
    • 2010-10-05
    相关资源
    最近更新 更多