zoukankan      html  css  js  c++  java
  • 移动端根据屏幕宽度适配rem

    常见设计稿尺寸为 750px , 此处以 750 为基准,当屏幕宽度为750px 时设置 html 根节点的 font-size 为 100px,1rem = 100px。故此,将屏幕宽度像素与750 的比值与 100px 相乘,得到最后的 font-size 为 html 的字体大小。后面的样式书写中,即可按照设计稿尺寸进行转换,(设计稿尺寸 × 0.01) rem 

    <script>
        (function (doc, win) {
          var docEl = doc.documentElement,
            widthPoint = 750,
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function () {
              var clientWidth = docEl.clientWidth;
              if (!clientWidth) return;
              if (clientWidth >= widthPoint) {
                docEl.style.fontSize = '100px';
              } else {
                docEl.style.fontSize = 100 * (clientWidth / widthPoint) + 'px';
              }
            };
          if (!doc.addEventListener) return;
          win.addEventListener(resizeEvt, recalc, false);
          doc.addEventListener('DOMContentLoaded', recalc, false);
    
          docEl.addEventListener('touchstart', function (event) {
            if (event.touches.length > 1) {
              event.preventDefault();
            }
          }, false);
    
        })(document, window);
    
      </script>

     有些机型上没法监听  DOMContentLoaded  事件,若放在 window.onload 里执行,就会导致页面加载过程中出现一闪而过的缩放过程。考虑以上,引入 jquery ,放在 $(document).ready(function(){}) 中

    $(function(){
      // 设置 rem 单位
      setRem(document, window)
    })
    
    function setRem(doc, win) {
      var docEl = doc.documentElement,
        widthPoint = 750,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
          var clientWidth = docEl.clientWidth;
          if (!clientWidth) return;
          if (clientWidth >= widthPoint) {
            docEl.style.fontSize = '100px';
          } else {
            docEl.style.fontSize = 100 * (clientWidth / widthPoint) + 'px';
          }
        };
      recalc()
      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      // doc.addEventListener('DOMContentLoaded', recalc, false);
    
      docEl.addEventListener('touchstart', function (event) {
        if (event.touches.length > 1) {
          event.preventDefault();
        }
      }, false);
    }

    -- end --

  • 相关阅读:
    2010上交:计算表达式
    添加子评论
    上传图片
    settings配置 文件操作
    django 操作前端数据
    静态文件配置
    render httprequest
    上传文件配置
    Django为什么要跳转到不同的页面来实现不同的功能
    定义日志器
  • 原文地址:https://www.cnblogs.com/_error/p/9619400.html
Copyright © 2011-2022 走看看