em 是指当前元素所使用的字体中大写字母M的宽度。为什么要单独用M的宽度来表示呢?因为英文字体中有些是不等宽的字体,其中i的宽度最小,W的宽度最大,所以用M的宽度来做个代表,不过中文字体都是等宽的,没有这方面的麻烦。我们可以简单地把em理解为字体的大小,比如说当前元素的字体大小(font-size)是16px,那么1em=16px,1.5em=24px,依此类推。
rem与em类似,只不过它是以根元素(html)的字体大小作为基本单位的。
em和rem主要用于页面的弹性布局
ch应该是一个鲜为人知的计算单位。
ch是一个相对于数字0的大小。
1ch 就是数字 0 的宽度。
比如定义一个3ch的宽度,那么久只能装下3个0。
重复一次:1ch 等于一个 0 的 宽度!宽度!宽度!
注意,是0的宽度,和0的高度无关。
比如
可以看到,是一个正方形,因为ch只等于0的宽度。
ch还有另一个规则:
ch 是一个相对单位,所谓相对,意思是 ch 会根据当前容器的 ****font-size**** 变化而变化。
如果字体不是等宽字体,这时的ch看起来就不止是一个英文字母的宽度了。
比如
可以看到,16个小写L,并没有超出8ch。
同时,如果容器中的内容是中英文结合的话,用ch做长度单也不是那么好使。
上面用到的几个CSS属性,是用来控制如果内容超出容器,就用省略号显示超出的部分。 【CSS】省略号
ch一般很少用得上,因为使用规则可能稍微有点复杂,而且通常需要 js 配合使用。
一般都会用em来代替ch~