美文网首页CSS
移动端rem适配方案

移动端rem适配方案

作者: xuefeilvye | 来源:发表于2018-11-14 15:39 被阅读96次

    1.meta 设置 

    <meta name="viewport" content="initial-scale=1,width=device-width,user-scalable=no"/>

     因为这样设置了,网页宽度才和 设备宽度相同,才可以拿这个标准去限定范围 

    浏览器默认的viewport叫做 layout viewport这个layout viewport的宽度可以通过 document.documentElement.clientWidth 来获取,layout viewport 的宽度是大于浏览器可视区域的宽度的,比如980px;

    visual viewport  ,浏览器可视区域的大小 , 可以通过window.innerWidth 来获取;

    ideal viewport,也就是第三个viewport——移动设备的理想viewport;

    scale = ideal viewport / visual viewport = 1/dpr ;

    window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。

    公式表示就是:window.devicePixelRatio = 物理像素 / dips。

    dips:device-independent pixels

    设备独立像素,就是独立于设备之外的像素,也就是css像素。

    查看更多   移动前端开发之viewport的深入理解 

    移动端开发中,关于适配问题的一点总结(一)

    2. js 设置

    ;(function () {

        var change ='orientationchange' in window ?'orientationchange' :'resize';

       function calculate() {

           var deviceWidth =document.documentElement.clientWidth;

            if (deviceWidth <241) {

               deviceWidth =240;

            }else if(deviceWidth <320){

                deviceWidth =320;

           }else if (deviceWidth >750) {

                deviceWidth =750;

            }

           document.documentElement.style.fontSize =deviceWidth /7.5 +'px';

         };

         window.addEventListener('resize',calculate,false);

         calculate();

    })();

    2.1  js 细节

    (a)  (function () {})(); 

          ;(function () {}()); 

          立即执行函数,建立私有作用域,从而限制向全局作用域中添加过多的变量和函数

    (b)  var change ='orientationchange' in window ?'orientationchange' :'resize';

          看移动端是否支持orientationchange ,否则监听 rezise 事件。

           orientationchange:设备旋转的时候,会触发这个事件

          resize:监听窗口变化。

    (c)  iphone5 屏幕分辨率 宽是 320px, iphone6,7,8  屏幕分辨率 宽是 375px; 

    (d)   rem 是一个相对单位(root em,根em),使用rem为元素设定字体大小时,相对的是HTML根元素;

          如果 <html style= "font-size:37.5px;"> , 此时,1rem = 37.5px;

          document.documentElement.style.fontSize =deviceWidth /7.5 +'px';

         如果 设备宽是 750px,html 的 font-size 则为 100px;

        1rem = 100px; 1px = 1/100 rem; 5px = 5/100rem;

        也就是 7.5=设计稿尺寸/100;

          css元素尺寸=设计稿元素尺寸/100;

         一般情况下设计师给的PSD尺寸是750px,所以采用7.5;如果是640,采用6.4;

        window.addEventListener(change,calculate,false);  // 设备旋转时触发;

        calculate();  // 刷新时触发

    3.img图片和背景图片

    虽然以上判断条件大概包含所有机型,但有些设备视口还是比较窄的;若是需要全屏的图片,width设置成100%,而不是给他固定值。

    4. css元素设置

    .carbox{

    width:6.5rem;   /*设计图上元素宽为650px,除以100;*/

    margin:0 auto;

    padding:0.1rem 0 0 0.27rem;

    }

    关于移动端字体设置

    移动端安卓和IOS 默认中文字体看起来是差不多的,而针对英文和数字的字体区别比较大;

    而 Helvetica  两个系统都支持,可以这样设置

    body{font-family:Helvetica;}

    相关文章

      网友评论

        本文标题:移动端rem适配方案

        本文链接:https://www.haomeiwen.com/subject/xdgjiftx.html