移动适配方法(开发类)

作者: 枫之伊信 | 来源:发表于2017-09-21 20:43 被阅读141次

    总结的移动适配方法,希望可以共同学习。

    一、根据html根节点方案(rem单位)

    updataHtml();
    function updataHtml(){
         var w = document.documentElement.clientWidth;
               document.documentElement.style.fontSize=w/16+'px';
    }

    window.onresize=function(){
        updataHtml();
    }

    html{font-size: 20px;}

    二、手机淘宝的flexible方案(计算太繁琐)

    手机淘宝的flexible方案是综合运用rem和px两种单位+js设置scale和html字体

    只需要在Web页面的中添加对应的flexible_css.js,flexible.js文件:

    例如:
    设计师提供的UI宽度比如是640,写css的时候,比如一个div,设计的尺寸是:宽度:200,高度:100,那你就写width:200/640rem;height:100/640rem。
    width:200/640rem;不要直接这样写,你要算出200/640的结果。

    三、手机腾讯(根据设计稿同比缩放,在加上阀值控制)

    我们认为初始化的rem是100,对应的fontsize也是100,基准的屏幕宽度按照320的设计稿,根据当前屏幕的宽高像素比,算出来当前的rem,100比较好算,设置成其他的也无妨,因为你算的是相对比例。

    (function() {
         var baseFontSize = 100;
          var baseWidth = 320;
          var clientWidth = document.documentElement.clientWidth || window.innerWidth;
          var innerWidth = Math.max(Math.min(clientWidth, 480), 320);
          var rem = 100;
          if (innerWidth > 362 && innerWidth <= 375) {
                rem = Math.floor(innerWidth / baseWidth * baseFontSize * 0.9);
          }
          if (innerWidth > 375) {
               rem = Math.floor(innerWidth / baseWidth * baseFontSize * 0.84);
          }
         document.querySelector('html').style.fontSize = rem + 'px';
    }());

    具体详细:
    1、css设置了font-size:100px;
    2、引入刚才那个js。
    3、比如一个按钮设计稿件是30pxX30px 它是除以100的。最后咱们设置是0.3remX0.3rem。

    它在js里面设置了三个区间:
    1)  var innerWidth = Math.max(Math.min(clientWidth, 480), 320);
    2)innerWidth > 362 && innerWidth <= 375
    3)innerWidth > 375

    相关文章

      网友评论

      • 枫之伊信:这个什么原理
      • 月球下的人_:<!doctype html>
        <html lang="en">

        <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui">
        <!-- viewport 后面加上 minimal-ui 在safri 体现效果 -->
        <meta name="apple-mobile-web-app-capable" content="yes">
        <!-- 隐藏状态栏/设置状态栏颜色 -->
        <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
        <!-- uc强制竖屏 -->
        <meta name="screen-orientation" content="portrait">
        <!-- QQ强制竖屏 -->
        <meta name="x5-orientation" content="portrait">
        <title></title>
        <script type="text/javascript">
        (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 / 750) + 'px';
        }
        };
        if (!doc.addEventListener) return;
        win.addEventListener(resizeEvt, recalc, false);
        doc.addEventListener('DOMContentLoaded', recalc, false);
        })(document, window);
        </script>
        </head>

        <body>
        <div id="app"></div>
        <!-- built files will be auto injected -->
        </body>

        </html>

        万用

      本文标题:移动适配方法(开发类)

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