手机端适配-rem布局

来源:互联网 发布:淘宝子账号在哪里认证 编辑:程序博客网 时间:2024/05/17 03:15

rem布局

当写到移动端页面的时候,用px单位跟媒体查询是很难做到适配所有机型的,所以我找到了rem布局;

rem: rem是根据html节点的fontSize来自动修改的,当html元素的fontSize是12px时,
那么久可以得出 1rem = 12px;

rem布局: 其实就是把需要自适应元素的px换成rem,因为rem是根据html自动修改的,所以我们
可以用js检测手机屏幕大小,再根据屏幕大小计算出html的fontSize值,从而使页面内的rem发生改变。

这是rem布局的核心代码,这段代码的大意是:
如果页面的宽度超过了640px,那么页面中html的font-size恒为100px,否则,
页面中html的font-size的大小为: 100 * (当前页面宽度 / 375)

    (function (doc, win) {        var docEl = doc.documentElement,            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',            recalc = function () {                var clientWidth = docEl.clientWidth;                if (!clientWidth) return;                docEl.style.fontSize = 100 * (clientWidth / 375) + 'px';            };        if (!doc.addEventListener) return;        win.addEventListener(resizeEvt, recalc, false);        doc.addEventListener('DOMContentLoaded', recalc, false);    })(document, window);

为什么要设置html的font-size?
如果你把html的font-size设为20px,前面说过,rem就是html的字体大小,那么1rem = 20px。

此时,此时宽60px,高40px的元素样式就这样设置如下 ↓

width: 3rem;height: 2rem;

那要是宽55px,高37px呢?然后经过换算,,设置如下 ↓

width: 2.75rem;height: 1.85rem;

是不是发现这换算起来有点麻烦啊…

如果我们一开始把html的font-size设为100px呢?此时1rem = 100px,那么上面的
宽55px,高37px的元素样式就可以这么设置 ↓

width: 0.55rem;height: 0.37rem;

是不是换算起来简单多了?!

所以我们可以先把html的字体大小设为100px,再通过简单的换算计算出各个元素的rem。

375是什么?
375其实就是你当前已经适配好的手机的屏幕宽度,就是在谷歌浏览器下模拟iPhone6的屏幕宽度,
我是以这个宽度来做原稿的,如果是在其他宽度下做的原稿则把375改成其它宽度。

原创粉丝点击