调整em中元素的大小不会随着字体类型而改变,就像它为ex或ch大小改变一样。即使是强硬的不同字体类型也有不同大小的' M'。
<div id="em1">Font Serif with em as units</div>
<div id="em2">Font Sans-Serif with em as units</div>
<div id="ex1">Font Serif with ex as units</div>
<div id="ex2">Font Sans-Serif with ex as units</div>
<div id="ch1">Font Serif with ch as units</div>
<div id="ch2">Font Sans-Serif with ch as units</div>
body {
padding: 20px;
}
#em1,#em2 {
width: 25em;
height: 40px;
background: orange;
margin: 20px;
}
#ch1,#ch2 {
width: 50ch;
height: 40px;
background: orange;
margin: 20px;
}
#ex1,#ex2 {
width: 50ex;
height: 40px;
background: orange;
margin: 20px;
}
#em1, #ex1, #ch1{
font-family: Serif;
}
#em2,#ex2,#ch2 {
font-family: Sans-Serif;
}
有关详细信息,请参阅此fiddle。 您可以注意到ch和ex的不同Div大小具有相同的宽度大小但字体类型不同,但对于em来说则不一样。
答案 0 :(得分:4)
在CSS中,所有尺寸都与“绝对长度单位”(px,in,cm,mm,pt,pc)相关,默认为像素(在CSS3中指定为1英寸的1/96)。 / p>
您引用的三个单位是字体相对长度,因此您会认为它们与字体维度直接相关,但em
的关联方式不同。
ex
和ch
对于字体特性是唯一的,但em
是通过元素的继承字体大小来衡量的(通常是“绝对长度单位” - 通常参考像素单位。)
em unit :等于使用它的元素的'font-size'属性的计算值(1.2em比特定或继承的字体大小大20%..总是在“绝对长度单位”中。
更改font-family时单位长度不会改变,因为em
基于字体大小 - 总是基于“绝对长度单位”。 如果未指定字体大小,则默认值为16px。
ex unit :等于第一个可用字体的已用x高度,一个单位的值对于该字体是唯一的。所谓的x高度是因为它通常等于小写“x”的高度。但是,即使对于不包含“x”的字体,也会定义“ex”。我认为这不是一个有用的案例。
ch unit :0(零)字符的宽度 - 与ex
测量一样随意。
答案 1 :(得分:1)
em
单位,definition,表示字体的大小,或者更具体地说,是font-size
属性的计算值。它通常被认为是指字体的高度,这是正确的,正确理解。它通常被称为字母“M”的宽度,但事实并非如此;每个字母的宽度由印刷师决定,实际上,“M”通常比字体大小窄,如一个简单的实验所示:
<div style="width: 1em; height: 1em; outline: solid red">M</div>
&#13;
因此,em
单位仅取决于字体大小,而不取决于字体系列,样式等。 字体大小。
ex
单位被定义为等于没有上升和下降的小写字母的高度。这实际上是一个循环定义;上升是超出x高度的东西。在排版中,x高度是字体的基本属性之一,是字体设计的一个特征,而ex
单位是为了反映这一点,并且对于不同的字体是不同的。但是,许多浏览器只将ex
实现为字体大小的一半,即等于0.5em
,这使得ex
单元变得毫无用处。
ch
单位定义为等于数字0
的宽度。它的名字反映了这是“平均字符宽度”的合理近似的想法。但无论如何,单位的价值预计会根据字体而变化,而且确实如此。