1.rem定义?
首先css3规定1rem = html根节点的font-size,rem也就是root em简写。
为了方便计算通常设置根节点font-size = 100px 那么 1rem = 100px
2.动态计算rem原理?
**核心思想:**百分比布局可实现响应式布局,而rem相当于百分比布局。
**实现手段:**动态获取当前视口宽度width,除以一个固定的数n,得到rem的值。表达式为rem = width / n * (window.devicePixelRatio||1)。 这里考虑设备像素比。通过此方法,rem大小始终为width的n等分。
无论设备可视窗口如何变化,始终设置rem为width的1/n.即实现了百分比布局。
3.为什么要动态计算rem?
因为ui设计稿是指定的某个分辨率,要想在其他分辨率下使用同样的尺寸就需要等比缩放,因此需要js动态计算rem。
width / n 是将屏幕分为了ui设计稿的n等分,当设备宽度不是ui设计稿的宽度时,页面等分不变,表现为页面百分比缩放。
4.若固定写死html.fontSize = 100px而不是动态计算会有什么问题?
举个例子:在1920 * 768分辨率下的ui设计稿有个200 * 200 px的盒子,那么css文件中该盒子样式为 2 * 2 rem 。在屏幕1680宽度下: