移動端rem.js的使用方法

下面的代碼一是我根據rem的使用經驗,本身寫的一個rem.js,發現很好用,能適用全部移動端h5頁面的自適應需求:css

代碼一:

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頁面自適應代碼,效果跟個人同樣,也可使用:html

代碼二: 小米官網的寫法

!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換算,其餘的沒作,只是給你們看一個效果。字體

相關文章
相關標籤/搜索