iphone不同螢幕的clientWidth
iphone4: 320px
iphone6: 375px
iphone6s: 414px
...
複製程式碼
監聽螢幕的大小改變
window.addEventListener(resizeEvt,recalc,false);
複製程式碼
計算原理(等比縮放)
rem 就是幫我們把設計圖實現一個等比縮放的過程,
假如設計圖是按640px 來設計的,那麼我把設計圖分成 10份(隨你自己分),
也就是 640px = 10rem,那麼就是1rem=64px,在根元素html上設定的font-size實際就是給網頁的一個標準,它的px是多少,
那麼子級的 1rem 就等於多少那麼在 640px的螢幕下,根元素 html 的font-size 就可以計算為640/10,
但是螢幕是不指定大小的,如果螢幕縮小的,那麼根元素的值也要按百分比來縮小,如:
螢幕如果縮到了一半 320,(320/640)*(640/10)(螢幕寬度/設計圖) *(設計圖/設計圖的總分成)
我們公司是按蘋果5寬度 320px 的設計圖來做的,然後我把設計圖分成16份,也就是16rem,
那麼我的 1rem = 320/16 = 20px,那麼公式就是(螢幕寬度/320) *(320/16)
然後改變 html 標籤的fontSize
html.style.fontSize = 20*(width/320)+"px";
複製程式碼
完整程式碼
(function(doc, win) {
var docEl = doc.documentElement, //getElementById("luckDraw")
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
//if (!clientWidth) return;
if(clientWidth<600){
var width = clientWidth;
}else{
var width = 600;
}
docEl.style.fontSize = 20 * (width / 320) + 'px';
//寬與高度
//document.body.style.height = clientWidth * (900 / 1440) + "px"
};
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window)
複製程式碼
小程式中rem的使用
小程式中規定共有 750個物理畫素
例如:設計稿750px寬度此時1rem = (750/20)rpx = 37.5px
例如:設計稿640px寬度此時1rem = (640/20)rpx = 32px
例如:設計稿320px寬度此時1rem = (320/20)rpx = 16px
複製程式碼
小程式中rpx與px的轉換
例如:設計稿750px寬度那麼恭喜您,你ps上量出寬度是多少,那麼你就定義多少rpx,也就是 1px = 1rpx
例如:設計稿640px寬度那麼很遺憾,你需要轉換一下 1px = 750/640 rpx
在 iPhone6 上,螢幕寬度為375px,750/375= 2rpx ,也就是說 1px = 2rpx ,剛好是整數,所以最好設計圖是以 iPhome6 為標準複製程式碼