移动适配方法(开发类)

作者: 枫之伊信 | 来源:发表于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

相关文章

  • 移动适配方法(开发类)

    总结的移动适配方法,希望可以共同学习。 一、根据html根节点方案(rem单位) updataHtml();fun...

  • 4. 移动端适配相关概念

    1. 什么是移动端适配? 移动端开发目前主要包括三类: 原生App开发(iOS、Android、RN、uniapp...

  • 移动web开发与适配

    学习目标 了解移动web简单调试方法 了解移动web常见适配方案 掌握移动端布局技巧 全面掌握rem适配方法 移动...

  • 移动端适配

    移动端适配 dpr、DPI、PPI 视口 移动端适配的方案 微信小程序适配方案 微信小程序开发

  • LayaAir屏幕适配

    LayaAir屏幕适配 官方教程链接:LayaAir实战开发11-屏幕适配 屏幕适配 随着移动端设备(手机、平板、...

  • Python适配器模式

    适配器模式,适配不同方法的类。

  • 移动端适配方案

    @description 该方法是用于移动端适配功能, 结合淘宝的适配方案flexible + rem 实现适配,...

  • UI基础7 适配

    适配 什么是适配? 适应、兼容各种不同的情况 移动开发中,适配的常见种类 系统适配针对不同版本的操作系统进行适配 ...

  • 基础 (十二) : Autolayout

    适配 什么是适配? 适应、兼容各种不同的情况 移动开发中,适配的常见种类 系统适配 针对不同版本的操作系统进行适配...

  • Autolayout

    1.屏幕适配 系统适配 什么是适配?适应、兼容各种不同的情况 移动开发中,适配的常见种类系统适配:针对不同版本的操...

网友评论

  • 枫之伊信:这个什么原理
  • 月球下的人_:<!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