我想知道em
单位是什么,以及转换为像素(px
)时1em是多少.我还在某处读到了一些关于IE的bug,要克服哪些正文字体大小应该设置为某些东西,但不能跟随太多.有人可以详细解释一下吗?
egr*_*nin 38
尽管你可能在其他地方读过,但em和px之间没有直接关系.
作为其中一个链接:
"em"值基于大写M的宽度
因此每种字体都会有所不同.窄字体可能与扩展字体具有相同的高度(以px为单位),但是em的大小会有所不同.
编辑三年后:
现在有很多来源说1em =字体大小(以px为单位).也就是说,当你写font-size:16px
,然后1em = 16px.这仍然不同意Adobe源代码(其中1em =字体大小pt
),但在任何一种情况下它都显得奇怪; 使用压缩字体时,em的大小会太大,而使用扩展字体则会太小.
我打算做一些测试页面并亲自看看.
并且:
我看到没有人(包括我)真的回答了这个问题(这有点隐藏):
我还在某处读到了一些即bug,并将其设置为体积字体大小
根据这个页面,你需要将它添加到你的CSS : html{ font-size:100%; }
. 该页面已有六年了,我还没看过(数百条)评论,所以我不知道它是否仍然相关.
Mar*_*lis 18
em基于字母M并依赖于字体的M原则是一个经常被说明的神话!W3c em文档非常简洁地描述了ems和像素的确切关系.使用字母M来计算字体大小至少过于复杂和不必要.
'em'单位等于使用它的元素的'font-size'属性的计算值.例外情况是'em'出现在'font-size'属性本身的值中,在这种情况下它引用父元素的字体大小.它可用于垂直或水平测量.
以下是重点.
没有祖先放大,1em完全等于像素font-size属性.
使用x-ems或x-percent的祖先放大率意味着您只需乘以明显的比率x或x/100.因此,一个简单的java脚本循环将计算确切的字体大小,假设:(1)没有CSS来阻止java脚本; (2)某些祖先的字体大小以绝对单位设置.这是文档所讨论的计算值.手计算可以绕过CSS,但仍然必须在祖先链中找到绝对单位.
由于ems测量宽度,您始终可以通过创建1000 ems长的div并将其client-Width属性除以1000来计算确切的字体大小.由于ems四舍五入到最接近的千分之一,因此需要1000 ems以避免错误的像素截断.
您可能可以创建M原则失败的字体,因为em基于font-size属性而不是实际字体.假设您有一个奇怪的字体,其中M是其他字符大小的1/3,并且您的字体大小为10像素.您是否认为像素字体大小以某种方式保证最大字符高度,因此M不会是10像素而所有其他字符都是30像素?
警告