(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if (clientWidth >= 750) { docEl.style.fontSize = '100px'; } else { docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; } }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); /*DOMContentLoaded文檔加載完成不包含圖片資源 onload包含圖片資源*/ })(document, window);
//使用JS控制rem做爲單位進行計算 window.onload=function(){ //一、首次加載時,調用動態設置rem的api setRemSize(); //二、當用戶企圖更改瀏覽器寬度 自動獲取屏幕寬度,再計算rem賦值給根元素的font-size window.addEventListener('resize',setRemSize,false);//resize--瀏覽器寬度改變時觸發 /*window.onresize=function(){ //onresize瀏覽器尺寸改變事件 setRemSize(); }*/ function setRemSize(){ //在任何尺寸中均可以得到rem值 //得到屏幕的寬度 rem=屏幕寬度/7.5+"px" var _clientWidth=document.documentElement.clientWidth/7.5+'px'; console.log(_clientWidth); //將獲得的rem值複製給根元素的font-size document.documentElement.style.fontSize=_clientWidth; } }
以上兩種方法實質性是同樣的,都是經過控制根目錄的font-size來達到屏幕適配。api