移動(dòng)端可用兼容適配:vw+vh,em,dpi,rem
使用rem:
? ? 之前采用的是媒體查詢踢京,但是當(dāng)屏幕發(fā)生旋轉(zhuǎn)時(shí),在IOS上沒(méi)有問(wèn)題,但是在安卓是沒(méi)有任何反應(yīng),css3的媒體查詢懂版,需要添加:
<meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
才能在移動(dòng)端有很好的顯示,但是躏率,因?yàn)閮?nèi)容需要?dú)q屏幕大小改變躯畴,所以有不可取之處。
? ? 之后薇芝,使用js進(jìn)行兼容適配:
(function(doc, win) {
? ? var docEl = doc.documentElement,
? ? ? ? resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
? ? ? ? recalc = function() {
? ? ? ? ? ? var clientWidth = docEl.clientWidth;
? ? ? ? ? ? if (!clientWidth) return;
? ? ? ? ? ? docEl.style.fontSize = 16 * (clientWidth / 375) + 'px';
? ? ? ? };
? ? if (!doc.addEventListener) return;
? ? win.addEventListener(resizeEvt, recalc, false);
? ? doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
orientationchange事件是蘋果提出的蓬抄,當(dāng)屏幕旋轉(zhuǎn)時(shí)觸發(fā),以375的屏幕大小為標(biāo)準(zhǔn)夯到,16為根字號(hào)嚷缭,當(dāng)屏幕寬度不同時(shí)切換不同的根字號(hào),監(jiān)聽屏幕,當(dāng)事件觸發(fā)時(shí)調(diào)用recalc去重置根字號(hào)阅爽,DOMContentLoaded事件是當(dāng)dom樹建立完成時(shí)觸發(fā)路幸,針對(duì)許多虛擬dom渲染的框架來(lái)說(shuō)比onload事件無(wú)疑快很多。這里既監(jiān)聽了window付翁,又監(jiān)聽了document简肴,避免在window加載或者dom加載的時(shí)候出現(xiàn)問(wèn)題,因?yàn)檫@里都調(diào)用了重置根字號(hào)的方法百侧!
當(dāng)然砰识,我以上所說(shuō)的使用媒體查詢也能做到,基本主流的沒(méi)問(wèn)題佣渴,但是榮耀系列辫狼,還有舊的vivo系列,還有iPhone4等一部分手機(jī)上如果使用媒體查詢會(huì)很悲壯辛润,至今我也還沒(méi)有找到很好的辦法進(jìn)行兼容予借,如果大家有好的建議歡迎隨時(shí)留言。
?