【问题标题】:Is using 'ch' for CSS widths appropriate?对 CSS 宽度使用“ch”是否合适?
【发布时间】:2020-07-29 09:39:49
【问题描述】:

对于涉及 CSS 中宽度单位的任何内容,当我需要固定宽度时,我总是使用 px,而当我需要相对于字体大小的宽度时,我总是使用 em

然后我意识到 em 确实是字体的高度,而不是宽度。因此 ch 似乎更合适。

忽略 ch 是一个相对较新的 CSS 单元(旧的浏览器可能不支持它),当指定任何应该随字体大小缩放的水平长度时,最好使用 chem 还是其他?

【问题讨论】:

  • 在研究 'em' 单位时,我发现很多相互矛盾的信息,关于它是否只是高度的测量,或者它是否反映了字体的高度和宽度。无论哪种方式,“ch”单位似乎是宽度的更好选择,但我找不到任何支持该假设的参考资料。

标签: css fonts width scale font-size


【解决方案1】:

不要在字体的高度或宽度方面考虑em,它源自字体的度量元数据,在技术上与字体中的单个字母无关,甚至与字体的平均高度或宽度无关一组特定的字母。它只是一个您知道的值,无论您在何处加载该字体,它始终是相同的,这就是为什么只要确保加载正确的字体就可以使用

如果您指定要使用的字体,则可以安全地使用em,并且知道无论使用哪种设备/浏览器组合,您的内容的大小始终相同。另一方面,如果您隐含使用任何字体(例如依赖系统名称或使用“衬线”,甚至根本不指定<html><body> 的最顶层字体),那么您将不得不三思而后行关于使用em,或者任何相对单位。

底线:在您的页面上强制使用字体,然后em 单位是 100% 可靠的,因为始终保证在每个上下文中使用的字体都是您设计时使用的字体。

更新: CSS3 在这个答案后大约 2 年问世,它重新定义了 em 的含义。根据当前规则(2017 年 4 月)em 被定义为与font-size 相同的值。因此,font-size: 16px 直升意味着1em 对应于16px

【讨论】:

  • 非常感谢您的贡献。您的答案是否有明确的(和当前的)参考?当我在网上研究这个问题时,我发现了大量相互矛盾的信息。大约一半陈述你所陈述的内容,一半陈述相反的内容。您使用“技术上绝不是”一词,这让我认为您找到了更好的参考。谢谢。
  • 我想说的是,无论是高度还是宽度都无关紧要:只要您确保使用带有明确特定字体的em,该组合将始终有效同样的事情。 CSS Level 1 规范指出 em 是字体的高度,但仅此而已:1em 用于相同点大小的不同字体可以不同:小字体可以指定很大的高度,以实现较大的基线到基线距离,类似地,大字体可以指定小于其上升部分的高度,从而影响垂直重叠。
  • 这里的原答案其实是不正确的。在 CSS 中,em 是一个相对大小,但与所选的字体系列无关。 CSS 规范是 em 始终等于字体大小。因此,“font-size: 12px”元素上的 1em 长度为 12 像素;而 ex 和 ch 与所选字体系列相关。来源:w3.org/TR/css3-values/#font-relative-lengths
  • 更新了答案以包含这个新的-due-to-spec-changes-after-this-answer 信息 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
相关资源
最近更新 更多