下面的代碼一是我根據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換算,其餘的沒作,只是給你們看一個效果。字體