什么是em字体大小单位?它的像素数是多少?

时间:2010-12-17 19:33:15

标签: css font-size em

我想知道em单位是什么,以及转换为像素(px)时1em是多少。我还在某处读到了一些关于IE的bug,要克服哪些正文字体大小应该设置为某些东西,但不能跟随太多。有人可以详细解释一下吗?

8 个答案:

答案 0 :(得分:37)

尽管您可能在其他地方阅读过,但em和px之间存在直接关系。

其中一个链接指出:

  

“em”值是基于的   在大写的宽度M

所以每种字体都会有所不同。窄字体可能与扩展字体具有相同的高度(以px为单位),但是em的大小会有所不同。

三年后编辑:

现在有很多来源说1em =字体大小(以px为单位)。也就是说,当你写font-size:16px时,那么1em = 16px。这仍然不同意Adobe源代码(其中1em = pt中的字体大小),但在任何一种情况下它都显得奇怪;使用压缩字体时,em的大小会太大,而使用扩展字体则会太小。

我打算做一些测试页面并亲自看看。

还有:

我看到没有人(包括我)真的回答了这个问题(有点隐藏):

  

我还在某处读到了一些关于bug的信息并将其设置为将字体大小设置为

根据this page,您需要将此添加到您的css:html{ font-size:100%; }。该页面已有六年了,我还没看过(数百条)评论,所以我不知道它是否仍然相关。

答案 1 :(得分:18)

基于字母M并且依赖于字体的M原则是一个经常陈述的神话! W3c em documentation非常简洁地描述了ems和像素的确切关系。使用字母M来计算字体大小至少过于复杂和不必要。

  

'em'单位等于计算的单位   。的'font-size'属性的值   使用它的元素。该   例外情况是'em'出现在   'font-size'属性的值   本身,在这种情况下,它指的是   父元素的字体大小。它   可用于垂直或水平   测量。

以下是重点。

  1. 没有祖先放大,1em与像素font-size属性完全相同。

  2. 使用x-ems或x-percent的祖先放大率意味着您只需乘以明显的比率x或x / 100。因此,一个简单的java脚本循环将计算确切的字体大小,假设:(1)没有C.S.S来阻止java脚本; (2)某些祖先的字体大小以绝对单位设置。这是文档所讨论的计算值。手计算可以绕过C.S.S.,但绝对单位仍然必须在祖先链中找到。

  3. 由于ems测量宽度,你总是可以通过创建一个1000 ems长的div并将其client-Width属性除以1000来计算确切的字体大小。由于ems四舍五入到最接近的千分之一,你需要1000 ems到避免错误的像素截断。

  4. 您可能可以创建M原则失败的字体,因为em基于font-size属性而不是实际字体。假设您有一个奇怪的字体,其中M是其他字符大小的1/3,并且您的字体大小为10像素。您是否认为像素字体大小以某种方式保证最大字符高度,因此M不会是10像素而所有其他字符都是30像素?

  5. 警告

    1. (2)的一个主要警告是前单位的相对比率非常不稳定。 在具有常量字体的相同浏览器中,相对比率可以随字体大小而变化。即使使用相同的字体大小和浏览器安全字体(例如Georgia),ex的相对比率也随浏览器而变化。如果你想要符合性,这是一个很好的理由,不使用ex单元。如果使用ex单元,则无法通过祖先链计算字体大小。

答案 2 :(得分:5)

它是根据你的身体字体大小计算出来的。您可以使用像素到转换器来准确找出您网站上的内容。

PxToEm

答案 3 :(得分:4)

em是最初用于印刷排版的测量(根据维基百科)。以下是需要考虑的一些事项:如果em被定义为12pt类型,则em是12/72英寸的打印页面;但如果将em定义为16px,则其宽度(以英寸为单位)取决于介质的分辨率。 (注意:在移动设备出现之前,72ppi到120ppi的分辨率曾被认为是“安全浏览器”标准。)因此,当您的用户使用宽度为300px的设备时,1em作为16px就是很多“不动产”。在我看来,最好使用em测量来定义文本段落以有效地平衡空白区域,而不是页面布局或定位。

答案 4 :(得分:3)

  

以字母“M”命名,em单元在排版方面具有悠久的传统,用于测量水平宽度。例如,经常在美国文本( - )中找到的长划线被称为“em-dash”,因为它在历史上具有与字母“M”相同的宽度。它的较窄的堂兄( - ),经常在欧洲文本中找到,同样被称为“en-dash”。

     

多年来,“em”的含义发生了变化。并非所有字体都包含字母“M”(例如中文),但所有字体都有高度。因此,该术语是指字体的高度 - 而不是字母“M”的宽度。

来自“惊人的单位和其他最佳做法”https://www.w3.org/WAI/GL/css2em.htm

答案 5 :(得分:2)

EM是与字体的磅值成比例的度量单位。

答案 6 :(得分:2)

此链接可以帮助您 http://jontangerine.com/log/2007/09/the-incredible-em-and-elastic-layouts-with-css

引自那篇文章:

  

我们知道1em 总是等于父元素的字体大小,因此:

1 ÷ parent font-size × required pixel value = em value
     

对于您的书签:Pixel to ems conversion table表示字体大小。

答案 7 :(得分:1)