1. 程式人生 > >移動端rem.js使用方法

移動端rem.js使用方法

下面的程式碼一是我根據rem的使用經驗,自己寫的一個rem.js,發現很好用,能適用所有移動端h5頁面的自適應需求:

程式碼一:

``` window.onload = function(){ /*720代表設計師給的設計稿的寬度,你的設計稿是多少,就寫多少;100代表換算比例,這裡寫100是 為了以後好算,比如,你測量的一個寬度是100px,就可以寫為1rem,以及1px=0.01rem等等*/ getRem(720,100) }; window.onresize = function(){ getRem(720,100) }; function getRem(pwidth,prem){ var html = document.getElementsByTagName("html")[0]; var oWidth = document.body.clientWidth || document.documentElement.clientWidth; html.style.fontSize = oWidth/pwidth*prem + "px"; } ```

下面的程式碼二,是我在小米網上看到的移動端h5頁面自適應程式碼,效果跟我的一樣,也可以使用:

程式碼二: 小米官網的寫法

``` !function(n){ var e=n.document, t=e.documentElement, i=720, d=i/100, o="orientationchange"in n?"orientationchange":"resize", a=function(){ var n=t.clientWidth||320;n>720&&(n=720); t.style.fontSize=n/d+"px" }; e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1)) }(window); ```

看這兩個函式,把這些程式碼放到js裡面,規則就是,呼叫函式,放兩個引數,第一個引數,是設計稿的寬度,第二個引數是px與rem的轉換比例,通常會寫100(因為好算);當然了,要把這段js程式碼最好封裝在一個單獨的js檔案裡,並且放在所有的css檔案引入之前載入。
實際應用起來就是,#box1{ height:100px;}而呼叫了rem就是#box1{ height:1rem;}以此類推。 100px = 1rem . 1px = 0.01rem。在頁面中,凡是跟尺寸有關的padding、margin、width、height等等,都可以用rem來寫單位,這樣當不同解析度的手機在看同一個頁面時,效果幾乎是一樣的。

下面附圖,看效果:

程式碼:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <link rel="stylesheet" href="../css/reset-min.css"/>
    <script>
        window.onload = function(){
            getRem(720,100)
        };
        window.onresize = function(){
            getRem(720,100)
        };
        function getRem(pwidth,prem){
            var html = document.getElementsByTagName("html")[0];
            var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
            html.style.fontSize = oWidth/pwidth*prem + "px";
        }
        /*
        //小米官網的寫法
        !function(n){
            var  e=n.document,
                 t=e.documentElement,
                 i=720,
                 d=i/100,
                 o="orientationchange"in n?"orientationchange":"resize",
                 a=function(){
                     var n=t.clientWidth||320;n>720&&(n=720);
                     t.style.fontSize=n/d+"px"
                 };
                 e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1))
        }(window);*/
    </script>
    <style>
        .wrap{position:absolute;top:0;left:0;bottom:0;right:0;background:#fefefe;}
        .title{width:100%;height:0.98rem;line-height:0.98rem;color:#fff;background:#e02222;text-align: center;font-size:0.32rem;}
    </style>
</head>
<body>
    <div class="wrap">
        <div class="title">首頁</div>
    </div>
</body>

</html>

這裡的demo只對字型大小、高度、行高做了rem換算,其他的沒做,只是給大家看一個效果。就到這了,希望點贊哦!

原文地址:https://segmentfault.com/a/1190000008721148