rem 和 em?

rem 和 em都是css中的相对长度单位,他们的区别就是,rem是相对于根元素字体大小进行计算的,任意浏览器的默认字体都是16px,所以一般 1rem = 16px。

而em是相对于当前元素的字体大小来计算的,但是为什么我们经常说相对于父元素呢,其实也很好理解,因为font-size字体大小这个属性是可以被继承的,所以父元素的字体大小势必会影响到他的子元素的字体大小,也就是说子元素如果没有自己的font-size,那么它的font-size就会继承父元素,那此时 1em 的值就可以认为是相对于父元素字体大小来计算。

另外rem是css3新增的一个相对单位,r就是root根的缩写,它的出现也就是为了解决em的缺点,em是相对于父元素或当前元素的字体大小进行换算的,当当前元素或父元素字体大小改变时,就又得重新计算了,那么层级较多的时候,换算也就会越来越复杂,而rem只相对于HTML根元素,有了rem这个单位我们只需要调整根元素HTML的font-size,就能达到所有元素的动态适配,避免了一些复杂的层级关系。

补充:rem是相对于根元素进行计算,而em是相对于当前元素或父元素的字体大小。rem不仅可以设置字体的大小,还支持元素宽、高等属性。em是相对于当前元素或父元素进行换算,层级越深,换算越复杂。而rem是相对于根元素计算,避免层级关系。

发表评论