1. 程式人生 > >原生js移動端字體自適應方案

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

分辨 span 大小 AI 就是 淘寶二樓 介紹 移動 需要

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

本文結束。

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