相信不少刚开始写移动端页面的同志们都要面对页面自适应的问题,固然解决方案不少,好比:百分比布局,弹性布局flex(什么是flex),也都能得到不错的效果,这里主要介绍的是本人在实践中用的最顺手最简单的布局方案——rem(什么是rem)布局javascript
rem布局很是简单,首页你只需在页面引入这段原生js代码就能够了----其实这种自适应方案是一种“等比例缩放”,在手机上会随屏幕大小而变化,可是在ipad上面图标、间距会过大,,, 这里推荐rem布局(进阶版)css
1 (function (doc, win) { 2 var docEl = doc.documentElement, 3 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', 4 recalc = function () { 5 var clientWidth = docEl.clientWidth; 6 if (!clientWidth) return; 7 if(clientWidth>=640){ 8 docEl.style.fontSize = '100px'; 9 }else{ 10 docEl.style.fontSize = 100 * (clientWidth / 640) + 'px'; 11 } 12 }; 13 14 if (!doc.addEventListener) return; 15 win.addEventListener(resizeEvt, recalc, false); 16 doc.addEventListener('DOMContentLoaded', recalc, false); 17 })(document, window);
这是rem布局的核心代码,这段代码的大意是:
若是页面的宽度超过了640px,那么页面中html的font-size恒为100px,不然,页面中html的font-size的大小为: 100 * (当前页面宽度 / 640)
因而,问题来了,为何要这样?别急,我先来一一回答html
width: 3rem; height: 2rem;
那要是宽55px,高37px呢?而后通过换算,,设置以下 ↓ width: 2.75rem; height: 1.85rem;
是否是发现这换算起来有点麻烦啊,,,(固然,你要是心算帝请无视)width: 0.55rem; height: 0.37rem;
是否是换算起来简单多了?!1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width,maximum-scale=1.0,user-scalable=no,initial-scale=1.0"> 6 <script> 7 (function (doc, win) { 8 var docEl = doc.documentElement, 9 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', 10 recalc = function () { 11 var clientWidth = docEl.clientWidth; 12 if (!clientWidth) return; 13 if(clientWidth>=640){ 14 docEl.style.fontSize = '100px'; 15 }else{ 16 docEl.style.fontSize = 100 * (clientWidth / 640) + 'px'; 17 } 18 }; 19 20 if (!doc.addEventListener) return; 21 win.addEventListener(resizeEvt, recalc, false); 22 doc.addEventListener('DOMContentLoaded', recalc, false); 23 })(document, window); 24 </script> 25 /*你引进的资源*/ 26 <title>标题</title> 27 </head> 28 <body> 29 /*你的代码*/ 30 </body> 31 </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="black" name="apple-mobile-web-app-status-bar-style"> <meta content="telephone=no" name="format-detection"> <meta content="email=no" name="format-detection"> <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</title> <link rel="stylesheet" href="css/style.css"/> <link rel="stylesheet" href="css/index.css"> </head> <body> <header></header> <section></section> <footer></footer> </body> <script src="js/XXX.js"></script> </html>