rem

https://www.jianshu.com/p/d9606faafbaf

1.定义:

rem是相对于根元素(html标签)的字体大小的单位。简单可理解为屏幕宽度的百分比。

2.原理:

动态获取当前视口宽度width,除以一个固定的数n,得到rem的值。表达式为rem = width / n。通过此方法,rem大小始终为width的n等分。类似于 百分比布局

3.如何动态计算rem 

function init () {

    // 获取屏幕宽度

    var width = document.documentElement.clientWidth

    // 设置根元素字体大小。此时为宽的10等分

    document.documentElement.style.fontSize = width / 10 + 'px'

}

    // 首次加载应用,设置一次

    init()

    // 监听手机旋转的事件的时机,重新设置

    window.addEventListener('orientationchange', init)

    // 监听手机窗口变化,重新设置

    window.addEventListener('resize', init)

  理解:上面代码实现了,无论设备可视窗口如何变化,始终设置rem为width的1/10.即实现了百分比布局

4、tip:

  1、以上代码需在dom之前写入(可放在head里面第一个script标签)

        2、移动端加上meta标签

5.对于1像素会无法渲染问题

6.vw —— 视口宽度的 1/100;vh —— 视口高度的 1/100 —— MDN

/* rem方案 */

html{fons-size:width/100} p{width:15.625rem}

/* vw方案 */ p{width:15.625vw}

vw还可以和rem方案结合,这样计算html字体大小就不需要用js了

html{fons-size:1vw}  /* 1vw = width / 100 */

p{width:15.625rem}

7.字体大小并不能使用rem,字体的大小和字体宽度,并不成线性关系,所以字体大小不能使用rem;

你可能感兴趣的:(rem)