• 移动端布局Rem


    一、最好用没有之一

    http://www.jianshu.com/p/b00cd3506782

    虽然博主说这个方案已经过期了 但是新方案还没有理解 就接着沿用这个

    可以根据自己常用的设计稿的宽度修改 640 为 750 

    <!DOCTYPE html>
    <html lang="en">
    <head> 
     <meta charset="UTF-8">  
     <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">  
    <script>   
    (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 / 640) + 'px';
                    }
                };
    
            if (!doc.addEventListener) return;
            win.addEventListener(resizeEvt, recalc, false);
            doc.addEventListener('DOMContentLoaded', recalc, false);
        })(document, window);
    </script> 
     /*你引进的资源*/
    <title>标题</title> 
    </head>
    <body>
     /*你的代码*/
    </body>
    </html>
    
    作者:_minooo_
    链接:http://www.jianshu.com/p/b00cd3506782
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    二、高清方案

    高清方案就是根据设备屏幕的DPR(设备像素比,又称DPPX,比如dpr=2时,表示1个CSS像素由4个物理像素点组成)** 动态设置 html 的font-size, 同时根据设备DPR调整页面的缩放值,进而达到高清效果**。

    此方案也是默认 1rem = 100px,所以你布局的时候,完全可以按照设计师给你的效果图写各种尺寸啦。

    注意:

    • rem适合写固定尺寸。其余的根据需要换成flex或者百分比。
    • 在X5内核的浏览器下,字体会自动放大,解决方案: 
    *, *:before, *:after { max-height: 100000px }
    • 如果元素的宽度超过效果图宽度的一半(效果图宽为640或750),果断使用百分比宽度,或者flex布局。

        否则可能会有横向滚动条。

    'use strict';
    
    /**
     * @param {Boolean} [normal = false] - 默认开启页面压缩以使页面高清;  
     * @param {Number} [baseFontSize = 100] - 基础fontSize, 默认100px;
     * @param {Number} [fontscale = 1] - 有的业务希望能放大一定比例的字体;
     */
    const win = window;
    export default win.flex = (normal, baseFontSize, fontscale) => {
      const _baseFontSize = baseFontSize || 100;
      const _fontscale = fontscale || 1;
    
      const doc = win.document;
      const ua = navigator.userAgent;
      const matches = ua.match(/Android[Ss]+AppleWebkit/(d{3})/i);
      const UCversion = ua.match(/U3/((d+|.){5,})/i);
      const isUCHd = UCversion && parseInt(UCversion[1].split('.').join(''), 10) >= 80;
      const isIos = navigator.appVersion.match(/(iphone|ipad|ipod)/gi);
      let dpr = win.devicePixelRatio || 1;
      if (!isIos && !(matches && matches[1] > 534) && !isUCHd) {
        // 如果非iOS, 非Android4.3以上, 非UC内核, 就不执行高清, dpr设为1;
        dpr = 1;
      }
      const scale = normal ? 1 : 1 / dpr;
    
      let metaEl = doc.querySelector('meta[name="viewport"]');
      if (!metaEl) {
        metaEl = doc.createElement('meta');
        metaEl.setAttribute('name', 'viewport');
        doc.head.appendChild(metaEl);
      }
      metaEl.setAttribute('content', `width=device-width,user-scalable=no,initial-scale=${scale},maximum-scale=${scale},minimum-scale=${scale}`);
      doc.documentElement.style.fontSize = normal ? '50px' : `${_baseFontSize / 2 * dpr * _fontscale}px`;
    };
    
    作者:_minooo_
    链接:http://www.jianshu.com/p/985d26b40199
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    NLP(二十一)根据已有文本LSTM自动生成文本
    Keras(五)LSTM 长短期记忆模型 原理及实例
    Keras(六)Autoencoder 自编码 原理及实例 Save&reload 模型的保存和提取
    NLP(二十) 利用词向量实现高维词在二维空间的可视化
    Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例
    NLP(十六) DL在NLP中的应用
    Keras(三)backend 兼容 Regressor 回归 Classifier 分类 原理及实例
    ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (60000, 28, 28)
    Keras(二)Application中五款已训练模型、VGG16框架解读
    Python实现 下载IJCAI会议所有论文
  • 原文地址:https://www.cnblogs.com/echolife/p/7552701.html
Copyright © 2020-2023  润新知