rem手机端适配方案

1.页面加入如下代码

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

        if (!doc.addEventListener) return;
        win.addEventListener(resizeEvt, recalc, false);
        doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
页面的宽度超过了640px,那么页面中html的font-size恒为100px,否则,页面中html的font-size的大小为: 100 * (当前页面宽度 / 640) ,一般宽度用百分比或flex,高度rem。

2.

  
阿里团队的高清方案布局代码,所谓高清方案就是根据设备屏幕的DPR(设备像素比,又称DPPX,比如dpr=2时,表示1个CSS像素由4个物理像素点组成) 动态设置 html 的font-size, 同时根据设备DPR调整页面的缩放值,进而达到高清效果。

参考网址https://zhuanlan.zhihu.com/p/25552482

示例网址:https://minooo.github.io/Demo/react-study-step-03-demo/index.html#/

3.使用手淘flexible.js

原理也是根据dpr动态的html 的font-size

假如设计稿是750的,Flexible会将视觉稿分成100份(主要为了以后能更好的兼容vh和vw),而每一份被称为一个单位a。同时1rem单位被认定为10a。针对我们这份视觉稿可以计算出:

1a   = 7.5px
1rem = 75px 

整个宽度为10rem,对应的font-size为75px:

具体参考文章:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html 


你可能感兴趣的:(手机端自适应方案)