px,em,rem区别

熟悉的px

px:像素,绝对单位。不适合网站缩放时产生的变化,因此响应式布局一般不用px。

需要知道父节点的em

em:相对尺寸,其相对于当前对象内文本的font-size(如果当前对象内文本的font-size计量单位也是em,则当前对象内文本的font-size的参考对象为父元素文本font-size)。使用em可以较好的相应设备屏幕尺寸的变化,但是在进行元素设置时都需要知道父元素文本的font-size及当前对象内文本的font-size,如有遗漏可能会导致错误。

em的特点:

  1. em的值并不是固定的;
  2. em会继承父级元素的字体大小(如果没有指定父级元素的大小,一般会认定是相对于浏览器默认的字体大小16px=1em)

计算方法:

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

现在用的rem

rem:相对尺寸。rem也表示相对尺寸,其参考对象为根元素的font-size,因此只需要确定这一个font-size。

总结

选择使用什么字体单位主要由你的项目来决定,如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。如:

p {font-size:14px; font-size:.875rem;}