原生js移動端字體自適應方案


自從進入新公司之后,就一直采用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

本文結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM