zoukankan      html  css  js  c++  java
  • 为什么要用rem

    为什么要用rem

    • 参考文章web app变革之rem
    • 公司使用的375*667(也就是iPhone6)作为缩放比例标准,设计师是按照750px的标准出图
    • 为了保证在不同的屏幕下显示效果基本等同,为此规定了缩放比例 document.documentElement.clientWidth / 25 = 15
    • 这里的根字体大小可以按照喜好自定义
    • 因此在计算rem值时,需要按照设计师给定的px值除以50,如给定字体大小为30px,那么计算出来的rem30/2/25=.6rem
    • 下面的css只是罗列了基本常见的机型,实际上通过js来计算更易读易维护,如下
    /*默认根字体值50px,计算rem值时,我的习惯是先将UI给的值/2,然后再/25*/	
    /*测试一下看看是不是所有的比例都是15*/
    html {
        font-size: 50px
    }
    
    body {
        font-size: 24px
    }
    
    @media screen and (min- 320px) {
        html {
            font-size:21.333333333333332px
        }
    
        body {
            font-size: 12px
        }
    }
    
    @media screen and (min- 360px) {
        html {
            font-size:24px
        }
    
        body {
            font-size: 12px
        }
    }
    
    @media screen and (min- 375px) {
        html {
            font-size:25px
        }
    
        body {
            font-size: 12px
        }
    }
    
    @media screen and (min- 384px) {
        html {
            font-size:25.6px
        }
    
        body {
            font-size: 14px
        }
    }
    
    @media screen and (min- 400px) {
        html {
            font-size:26.666666666666668px
        }
    
        body {
            font-size: 14px
        }
    }
    
    @media screen and (min- 414px) {
        html {
            font-size:27.6px
        }
    
        body {
            font-size: 14px
        }
    }
    
    @media screen and (min- 424px) {
        html {
            font-size:28.266666666666667px
        }
    
        body {
            font-size: 14px
        }
    }
    
    @media screen and (min- 480px) {
        html {
            font-size:32px
        }
    
        body {
            font-size: 15.36px
        }
    }
    
    @media screen and (min- 540px) {
        html {
            font-size:36px
        }
    
        body {
            font-size: 17.28px
        }
    }
    
    @media screen and (min- 720px) {
        html {
            font-size:48px
        }
    
        body {
            font-size: 23.04px
        }
    }
    
    @media screen and (min- 750px) {
        html {
            font-size:50px
        }
    
        body {
            font-size: 24px
        }
    }
    
    (function(doc, win) {
    	var docEl = doc.documentElement,
    		resizeEvt = ‘orientationchange’ in window ? ‘orientationchange’ : ‘resize’,
    		recalc = function() {
    			var clientWidth = docEl.clientWidth;
    			if (!clientWidth) return;
    			/*选定一款机型作为缩放标准*/
    			docEl.style.fontSize = 25 * (clientWidth / 375) + ‘px’;
    			/*根字体最大50px*/
    			docEl.style.fontSize = docEl.style.fontSize > 50 ? 50 : docEl.style.fontSize;
    		};
    	if (!doc.addEventListener) return;
    	win.addEventListener(resizeEvt, recalc, false);
    	doc.addEventListener(‘DOMContentLoaded’, recalc, false);
    })(document, window);
    

    为了减少同学的工作量,就做了一个pexilToRem的对照表,如下

    px rem
    1px 0.04rem
    2px 0.08rem
    3px 0.12rem
    4px 0.16rem
    5px 0.2rem
    6px 0.24rem
    7px 0.28rem
    8px 0.32rem
    9px 0.36rem
    10px 0.4rem
    11px 0.44rem
    12px 0.48rem
    13px 0.52rem
    14px 0.56rem
    15px 0.6rem
    16px 0.64rem
    17px 0.68rem
    18px 0.72rem
    19px 0.76rem
    20px 0.8rem
    21px 0.84rem
    22px 0.88rem
    23px 0.92rem
    24px 0.96rem
    25px 1rem
    26px 1.04rem
    27px 1.08rem
    28px 1.12rem
    29px 1.16rem
    30px 1.2rem
    31px 1.24rem
    32px 1.28rem
    33px 1.32rem
    34px 1.36rem
    35px 1.4rem
    36px 1.44rem
    37px 1.48rem
    38px 1.52rem
    39px 1.56rem
    40px 1.6rem
    41px 1.64rem
    42px 1.68rem
    43px 1.72rem
    44px 1.76rem
    45px 1.8rem
    46px 1.84rem
    47px 1.88rem
    48px 1.92rem
    49px 1.96rem
    50px 2rem

    以上是直接在控制台转换的

    var pexilToRem=[];
    for(var i=1;i<51;i++){
      pexilToRem.push({'px':i+'px','rem':i/25+'rem'})
    }
    console.table(pexilToRem)
    

    当然也可以用scss

    $browser-default-font-size: 25px !default;//变量的值可以根据自己需求定义
    @function pxTorem($px){//$px为需要转换的字号
        @return $px / $browser-default-font-size * 1rem;
    }
    
  • 相关阅读:
    vue封装一些常用组件loading、switch、progress
    个人推荐的两款vue导出EXCEL插件
    解决react项目中跨域和axios封装使用
    vue仿阿里云后台管理(附加阿里巴巴图标使用)
    简单的利用nginx部署前端项目
    Python3 SMTP发送邮件
    WINDOWS和UNIX换行符的理解
    Forward Proxy vs Reverse Proxy
    Authentication token is no longer valid
    SNMP Introduction
  • 原文地址:https://www.cnblogs.com/phillyx/p/5498444.html
Copyright © 2011-2022 走看看