答: 1)px 像素(Pixel)。绝对单位。像素 px 是相对于显示器屏幕分辨率而言的,是一个虚拟长度单位,是计算 机系统的数字化图像长度单位,如果 px 要换算成物理长度,需要指定精度 DPI。
2)em 是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置, 则相对于浏览器的默认字体尺寸。它会继承父级元素的字体大小,因此并不是一个固定的值。
1.5em = 父级字体大小 * 1.5 = ?
3)rem 是 CSS3 新增的一个相对单位(root em,根 em),使用 rem 为元素设定字体大小时,仍然是相对大小, 但相对的只是 HTML 根元素。
1.5rem = 默认字体大小 (比如: 16px) * 1.5 = 24px
默认字体大小是依据你网站当前访问时所使用的浏览器或者其他设备来决定的,对于桌面浏览器默认是16px的字体大小。然后你现在要转换当前元素的字体大小为rem的时候你就可以这样做:
28px = 28/16 = 1.75rem
为了更方便的进行计算转换,你可以把默认字体大小设置成62.5%或者是10px,这个时候你要计算当前元素字体大小的时候,你就可以这样:
28px = 28/10 = 2.8rem
4)区别:IE 无法调整那些使用 px 作为单位的字体大小,而 em 和 rem 可以缩放,rem 相对的只是 HTML 根 元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有 字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了 IE8 及更早版本外,所有浏览器均已支持 rem。
兼容性写法:
因为chrome和其他主流浏览器的最小字体大小默认是12px。
html {font-size: 62.5%;}其实并没有设置成10px
所以可以成100px,再去使用rem单位
html {
font-size: 100px;
}
p { font-size: 15px; font-size: 0.15rem; } /* =15px */
总结:
区别 | 单位 | 相对于 | 是否可缩放 |
---|---|---|---|
px(像素) | 绝对 | 显示器屏幕分辨率 | IE无法调整 |
em | 相对长度 | 当前对象内文本字体尺寸 | 可缩放 |
rem | 相对单位 | HTML根元素 | 可缩放(IE8以上支持) |