zoukankan      html  css  js  c++  java
  • 移动端webview屏幕自适应写法+Echarts自适应写法

    首先新建一个rem.js文件,放到公共js文件夹,如下:

    (function(doc, win) {
      const docEl = doc.documentElement;
      const isIOS = navigator.userAgent.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);
      const dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1;
      // 被iframe引用时,禁止缩放
      const dps = window.top === window.self ? dpr : 1;
      const resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
      docEl.dataset.dpr = dps;
      function recalc() {
        let width = docEl.clientWidth;
        if (width / dps > 750) {
          width = 750 * dps;
        }
        docEl.dataset.width = width;
        docEl.dataset.percent = 100 * (width / 750);
        docEl.style.fontSize = 100 * (width / 750) + 'px';
      }
      recalc();
      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
    })(document, window);

    然后在main.js中引入rem.js 模块

    import './utils/rem.js';

    如果要在Echarts中使用rem那么需要额外做一些工作

     如图,在绘制函数的外部注册一个rem转换px的函数,如下:

        function remToPx(rem) {
          const fontSize = document.documentElement.style.fontSize;
          return Math.floor(rem * fontSize.replace('px', ''));
        }

    在相应的地方调用这个函数,将rem的值填入其中就可以了,本质上还是将rem根据fantsize的值转换为px,因为Echarts内部只接受px单位的数据。

  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/wangtong111/p/12566990.html
Copyright © 2011-2022 走看看