前言
做移动端适配用的比较多的就是使用rem作为单位了吧。本来在做web的时候使用的是px,然后又有em作为单位(这个单位我都不怎么用,太麻烦了),现在移动端的话,基本都是rem了。
em
em是一个相对的单位。这里的相对便是基于父元素的font-size来改变的。
举个例子:
1 | <div id="one"> |
1 | #one{ |
此时会发现两个world其实是一样大的。因此,我们可以一直使用父元素作为基准来设定font-size,这也决定了它的麻烦性,因为你需要一直去计算父元素转换过来的具体px是多少。那到了rem上场了。
rem
所谓的rem是指font size of the root element,即是根元素的字体大小,而这里的根元素,通常就是html。在html设置了具体的字体大小,然后我们便可以基于html来换算成rem了。举个例子(就用上个例子吧,把样式重写):
1 | <div id="one"> |
1 | html{ |
因为根元素字体大小是50px,所以父元素#one字体大小是25px,#one-one字体大小是15px,我们会发现两个world是一样大的。
用处
那rem到底怎么用作适配呢?上代码
1 | (function (doc, win) { |
因为不同手机的屏幕大小是不一样的,我们在一开始加载时,就执行该js,让其根据屏幕窗口大小,改变html的字体大小,然后我们便可以根据根元素字体的大小来设置css单位了。