它的全称是 font size of the root element (根元素的字体大小)
它是CSS3中新增长的一个尺寸(度量)单位,根节点(html)的font-size决定了rem的尺寸,也就是说它是一个相对单位,相对于(html)。
html
浏览器的默认的font-size是16px,1rem默认就等于16px。(chrome最小字体为12px)
web
用来作web app的屏幕适配,由于不一样手机型号的屏幕大小都不一样,因此这时候咱们就不能用px来作单位,rem是适配不一样手机屏幕的一种方案。
chrome
:root{ font-size:20px; } .box{ width:1rem; height:1rem; background-color:purple; }
将根元素html的font-size设置为20px,此时box的宽高都为20px,也就是1rem = 20px浏览器
//获取视窗宽度(兼容性写法) let rootWidth = document.documentElement.clientWidth || document.body.clientWidth; //获取html元素 let rootDom = document.querySelector('html'); //动态设置html的font-size(除以10是让浏览器的font-size达到比较合适目的) rootDom.style.fontSize = rootWidth / 10 + 'px';
px单位 / font-size【动态】 = rem单位【动态】 (错误的想法,有的小伙伴迷糊在这里)
px单位 / font-size【固定】 = rem单位【固定】 (正确的想法,有的小伙伴可能开始想不明白)
这里要注意的是你计算的font-size是固定的,而不是html的font-size是固定的,不少新人困惑在这里
错误的计算方法:(动态font-size)
200px / (320 / 10)【iphone5】 = 6.25rem
200px / (375 / 10)【iphone6】 = 5.333rem
200px / (768 / 10)【ipad】 = 2.604rem
这样的话
在【iphone5】下6.25rem 就是200px
在【iphone6】下5.333rem 就是200px
在【ipad】下2.604rem 就是200px
咱们经过了(图纸的px值 和 动态的font-size值)求出了动态的rem
按照这样的方式设置rem,在不一样的尺寸的机型下都是500px,那我还不如直接写死500px,由于屏幕的尺寸大小都是不一样的,因此咱们这样作毫无心义。(至关于咱们根据一个固定的px值求不一样机型下的rem值)。
正确的计算方法:(固定font-size)以iphone6为基准
200px / (375 / 10)【iphone6】 = 5.333rem
这样的话
在【iphone5】下5.333rem 就是170px
在【iphone6】下5.333rem 就是200px
在【ipad】下5.333rem 就是410px
app
也能够以【iphone5】为基准
200px / (320 / 10) 【iphone5】 = 6.25rem
这样的话
在【iphone5】下6.25em 就是200px
在【iphone6】下6.25rem 就是234px
在【ipad】下6.25rem 就是480px
这样就达到用rem来适配不一样尺寸的屏幕了
咱们以一种机型的font-size为基准,来计算出一个固定的rem,根元素html的font-size是动态的,因此这个rem值会根据不一样机型的font-size达到适配的目的(注意:你参与计算的font-size值毫不能是动态的,不然毫无心义)。
设计师常选择iPhone6做为基准设计尺寸,咱们通常以iPhone6为基准iphone