定义
它的全称是 font size of the root element (根元素的字体大小),
它是CSS3中新增加的一个尺寸(度量)单位,根节点(html)的font-size决定了rem的尺寸,也就是说它是一个相对单位,相对于(html)。
rem是一种相对长度单位。相对于根元素(即html元素)font-size计算值的倍数。
※其实rem布局的本质是等比缩放,一般是基于宽度,试想一下如果UE图能够等比缩放,那该多么美好啊。
移动端
<!DOCTYPE html><html lang="en" style="font-size:100px"><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script>function resetFontSize() {var baseFontSize = 100; //100PX的默认值var designWidth = 750; //设计稿的宽度var width = window.innerWidth;var currentFontSize = (width / designWidth) * baseFontSize;document.getElementsByTagName('html')[0].style.fontSize = currentFontSize + 'px';}window.onresize = function () {resetFontSize()};resetFontSize()</script><style>*{padding:0;margin:0;}body{overflow: auto;font-size: .28rem;}.box{width:7.5rem;height: 1rem;background: #000;}</style></head><body><div class="box"></div><p>42341</p></body></html>
web端
常规页面布局
// 设置 rem 函数function setRem () {// PC端console.log('非移动设备')// 基准大小baseSize = 100;let basePc = baseSize / 1920; // 表示1920的设计图,使用100PX的默认值let vW = window.innerWidth; // 当前窗口的宽度let rem = vW * basePc; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应font-size值document.documentElement.style.fontSize = rem +'px';}// 初始化setRem();// 改变窗口大小时重新设置 remwindow.onresize = function () {setRem()};
无滚动条布局
参考地址:https://hello.zhuzher.com
// 设置 rem 函数function setRem () {// PC端console.log('非移动设备')// 基准大小baseSize = 100;let basePc = baseSize / 1920; // 表示1920的设计图,使用100PX的默认值let vW = window.innerWidth; // 当前窗口的宽度let vH = window.innerHeight; // 当前窗口的高度// 非正常屏幕下的尺寸换算let dueH = vW * 1080 / 1920if (vH < dueH) { // 当前屏幕高度小于应有的屏幕高度,就需要根据当前屏幕高度重新计算屏幕宽度vW = vH * 1920 /1080}let rem = vW * basePc; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应font-size值document.documentElement.style.fontSize = rem + 'px';}// 初始化setRem();// 改变窗口大小时重新设置 remwindow.onresize = function () {setRem()};
