自從進入新公司之后,就一直采用800的方案,也就是判斷屏幕尺寸,大於800px是一種html字體處理方案,另一種方案是小於800px的html字體處理方案,
代碼如下:
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 >= 800) { 8 docEl.style.fontSize = '100px'; 9 } else { 10 docEl.style.fontSize = 100 * (clientWidth / 800) + 'px'; 11 } 12 }; 13 14 if (!doc.addEventListener) return; 15 win.addEventListener(resizeEvt, recalc, false); 16 doc.addEventListener('DOMContentLoaded', recalc, false); 17 })(document, window)
回來因為新開發業務需要,研究了淘寶二樓移動端的代碼,發現他們采用的是另一種自適應方案,如下
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 8 docEl.style.fontSize=clientWidth/10+'px'; 9 }; 10 11 if (!doc.addEventListener) return; 12 win.addEventListener(resizeEvt, recalc, false); 13 doc.addEventListener('DOMContentLoaded', recalc, false); 14 })(document, window)
哈哈,區別不大。至於到底具體在業務中有什么差別,還沒發現。希望知道的留言指點。
后來,無意間發現了淘寶實際采用的是一個自適應的庫:flexible.js,
這個庫本質是對根元素字體大小還有分辨率(dpx)的修改,有人寫了一篇介紹文章:https://github.com/amfe/article/issues/17?utm_source=caibaojian.com
本文結束。