這兩天H5靜態頁面開發過程當中的問題總結。html
//內容寬爲設備寬度,初始化縮放倍數爲1(不縮放) <meta name="viewport" content="width=device-width, initial-scale=1.0">
(1)px是相對於顯示器屏幕分辨率而言的相對長度單位。瀏覽器
(2)rem是相對根元素的font-size大小的相對單位,能夠作到只修改根元素font-size大小就成比例地調整全部字體大小。佈局
適配:字體
html { font-size:16px; } @media (max-width:414px) { html { font-size: 18px; } } @media (max-width:375px) { html { font-size: 20px; } }
var deviceWidth=document.documentElement.clientWidth; var rootFontSize = deviceWidth / 6.4; document.documentElement.style.fontSize=rootFontSize + 'px';
手動設置元素居中,要否則瀏覽器會隨機渲染,必須給它一個渲染規則。flex
解決:給父元素設置font-size:0; letter-spacing: -4px; 子元素再另外設置font-size和letter-spacing。spa
//orientationchange:設備更換事件 //onresize:接收reset事件時觸發的EventHandler //DOMContentLoaded: 瀏覽器窗口大小發生變化事件 (function (doc, win) { resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth=doc.documentElement.clientWidth; if (!clientWidth) return; //動態計算根元素的font-size doc.documentElement.style.fontSize=(clientWidth / 6.4) + 'px'; }; if (!doc.addEventListener) return; //監聽設備變化 win.addEventListener(resizeEvt, recalc, false); //監聽瀏覽窗口變化 doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
H5頁面的開發,由於設備視口大小不一致,在適配上應該足夠細緻、嚴謹。除了自適應的佈局以外,更應該注意細節的處理。調試