关于rem和em的区别
rem
rem:
表示根元素的字体大小
(通常为<html>
)下面是一个动态设置html字体大小的公式
~function () {
window.addEventListener('resize', computed);
// 添加事件,当设备尺寸改变,就执行computed函数
computed();
function computed() {
var deviceW = document.documentElement.clientWidth || document.body.clientWidth;
// 获取设备的宽度
if (deviceW > 640) return;
// 当前案例是以640的设计稿为例,判断,若是设备尺寸超过640,就不在执行computed
document.documentElement.style.fontSize = deviceW / 640 * 100 + 'px';
// 100 这里的100是在屏幕尺寸为640的时候,html字体大小为100px,之所以设置100,是为了便于计算
// 设置html的字体大小 这里是以640的设计稿为基准,当我们使用的设备宽度(deviceW)刚好为640的时候,html的 字体大小为100px; 当设备大小改变,小于640的时候, 就会触发resize函数,computed执行,动态的获取设备的宽度,然后除以640,就能计算出当前设备大小是原设计稿的百分之多少,然后乘以100,就能计算出当前屏幕宽度下html的字体大小为多少 }
}();
document.documentElement.style.fontSize
=xxxx 这里是设置html字体大小- 以当前的计算公式,若是设备尺寸为640,计算后
html
的字体大小为100px;1rem
就是100px; 若是屏幕尺寸缩小到320,computed
函数会自动获取屏幕的宽度,重新计算html的字体大小,此时html
字体大小应为50,所以1rem
就等于50px,- 而我们布局采用
rem
布局,width:.5rem
, 意思就是某个物体的宽度值相对于html的字体大小的值的百分比,width:.5rem
就是width
的值相对于html
字体大小的百分比为50%。因为html随着屏幕的大小改变,会不停的变化,所以width的值也会跟着改变
em
- em和rem一样都是相对单位,只不过em是以父级的font-size值决定的,当最近的父级没有设置font-size时,就会向上一层找,若是还没有就会一直向上找,直到找到html,若是还没有,就按浏览器默认字体大小,16px(在火狐和chrome);
px
- PX实际上就是像素,用PX设置字体大小时,比较稳定和精确
- 一般浏览器支持的最小字体大小应该为12px;