我知道em是字体大小的相对大小, 问题是,当 font-size * em 不是整数时, 比如font-size: 12px * 1.4em = 16.8px,结果是16px还是17px? 我在哪里可以找到关于此的规范?
最佳答案
它在 CSS2.1 规范中有描述:http://www.w3.org/TR/CSS21/fonts.html#algorithm
正文如下:
4.'font-size' must be matched within a UA-dependent margin of tolerance. (Typically, sizes for scalable fonts are rounded to the nearest whole pixel, while the tolerance for bitmapped fonts could be as large as 20%.) Further computations, e.g., by 'em' values in other properties, are based on the computed value of 'font-size'.
所以回答你的问题:16.8px 可以映射到 17px,但最终由客户端 UA 决定如何呈现文本。如果显示器具有逻辑子像素(如 Apple 的 Retina 显示器,其中 1 个 CSS 像素实际上是 2x2 个真实像素),那么您可以使用非整数像素字体大小。
编辑:我想我误解了规范,因为现代用户代理能够将文本呈现为任意大小,甚至是非整数像素大小。 CSS2 规范可以追溯到 1998 年,当时计算机上的排版与今天不同(例如,我不相信您可以强制 IE5 呈现 12pt 和 14pt 之间的文本)。所以我想这不再重要了,就好像你让现代浏览器渲染 0.5px 的文本一样,它实际上会给你一个漂亮的模糊 Blob 。
关于css - em 使用 ceil 或 floor 转换为 px,css 规范在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13596699/