多屏幕適配問題

移動端布局诈铛,為了適應(yīng)大屏手機蔚润,最好的方案是采用相對 單位rem
基于rem的原理裸弦,我們要做的就是: 針對不同手機屏幕尺寸和dpr動態(tài)的改變根節(jié)點html的font-size大小(基準(zhǔn)值)。
提取公式:rem = document.documentElement.clientWidth * dpr / 10(便于字體放大縮小吧)此時rem值為物理像素大小域庇,其中clientWidth=手機分辨率/(dpr*initial-scale)
則rem = 手機分辨率/initial-scale
瀏覽器默認字體大小為16px携兵;

設(shè)置不同分辨率屏幕保持高清的方法:關(guān)鍵詞rem initial-scale
第一步:根據(jù)手機分辨率疾掰,根節(jié)點字體大小,讓字體大小和手機的分辨率匹配:
rem = document.documentElement.clientWidth * dpr / 10(此時rem值為手機物理像素大小除以10)
第二步:利用縮放徐紧,使手機的邏輯像素和物理像素比例為1:1静檬;
設(shè)置方法:
```
var dpr, rem, scale;
var docEl = document.documentElement;
var fontEl = document.createElement('style');
var metaEl = document.querySelector('meta[name="viewport"]');
scale = 1 / dpr;
dpr = win.devicePixelRatio || 1;
rem = docEl.clientWidth * dpr / 10;
// 設(shè)置viewport,進行縮放并级,達到高清效果
metaEl.setAttribute('content', 'width=' + dpr * docEl.clientWidth + ',
initial-scale=' + scale + ',maximum-scale=' + scale + ',
minimum-scale=' + scale + ',user-scalable=no');
// 設(shè)置data-dpr屬性拂檩,留作的css hack之用,適配字體大小
docEl.setAttribute('data-dpr', dpr);
// 動態(tài)寫入樣式
docEl.firstElementChild.appendChild(fontEl);
fontEl.innerHTML = 'html{font-size:' + rem + 'px!important;}';
// 給js調(diào)用的嘲碧,某一dpr下rem和px之間的轉(zhuǎn)換函數(shù)
window.rem2px = function(v) {
v = parseFloat(v);
return v * rem;
};
window.px2rem: function(v) {
v = parseFloat(v);
return v / rem;
};
window.dpr = dpr;
window.rem = rem;
```

視覺稿還原方法
對于視覺塊的處理:
原高度通過 rem = px / 基準(zhǔn)值;
其中基準(zhǔn)值的計算就是上面所提到的方法
通過預(yù)編譯器如less寫一個轉(zhuǎn)換函數(shù)
.px2rem(@name, @px){
@{name}: @px / 75 * 1rem;
}
這樣對于視覺稿中固定寬度的塊我們可以通過預(yù)編譯函數(shù)進行轉(zhuǎn)換
對于400*300的塊我們可以這樣定義
.px2rem(width, 400);
.px2rem(height, 300);
轉(zhuǎn)換后
width: 5.33.rem; // ->400px
height: 4rem; // -> 300px

字體大小自適配
通過設(shè)置的data-dpr去hack字體稻励,讀取data-dpr,通過data-ptr的值利用預(yù)編譯器設(shè)置字體大小
.px2px(@name, @px){
@{name}: round(@px / 2) * 1px;
[data-dpr="2"] & {
@{name}: @px * 1px;
}
// for mx3
[data-dpr="2.5"] & {
@{name}: round(@px * 2.5 / 2) * 1px;
}
// for 小米note
[data-dpr="2.75"] & {
@{name}: round(@px * 2.75 / 2) * 1px;
}
[data-dpr="3"] & {
@{name}: round(@px / 2 * 3) * 1px
}
// for 三星note4
[data-dpr="4"] & {
@{name}: @px * 2px;
}
}

這樣做的好處:
1.可以實現(xiàn)1px寬度定義
2.高清圖片獲取,邏輯尺寸和實際尺寸一致望抽,獲取圖片更準(zhǔn)確
3.方便修改尺寸
4.可以適配多個屏幕尺寸

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末加矛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子煤篙,更是在濱河造成了極大的恐慌斟览,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辑奈,死亡現(xiàn)場離奇詭異苛茂,居然都是意外死亡,警方通過查閱死者的電腦和手機鸠窗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門妓羊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稍计,你說我怎么就攤上這事躁绸。” “怎么了丙猬?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵涨颜,是天一觀的道長。 經(jīng)常有香客問我茧球,道長庭瑰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任抢埋,我火速辦了婚禮弹灭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揪垄。我一直安慰自己穷吮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布饥努。 她就那樣靜靜地躺著捡鱼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酷愧。 梳的紋絲不亂的頭發(fā)上驾诈,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音溶浴,去河邊找鬼乍迄。 笑死,一個胖子當(dāng)著我的面吹牛士败,可吹牛的內(nèi)容都是我干的闯两。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漾狼!你這毒婦竟也來了重慢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤逊躁,失蹤者是張志新(化名)和其女友劉穎伤锚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體志衣,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年猛们,在試婚紗的時候發(fā)現(xiàn)自己被綠了念脯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡弯淘,死狀恐怖绿店,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庐橙,我是刑警寧澤假勿,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站态鳖,受9級特大地震影響转培,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浆竭,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一浸须、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邦泄,春花似錦删窒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至特碳,卻和暖如春诚亚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背测萎。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工亡电, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硅瞧。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓份乒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子或辖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 移動端布局瘾英,為了適配各種大屏手機,目前最好的方案莫過于使用相對單位 rem. 基于rem的原理颂暇,我們要做的就是針對...
    DontPushMeForev閱讀 505評論 0 0
  • 剛開始做移動端web開發(fā)的同學(xué)應(yīng)該都碰到過頁面適配問題缺谴,為什么我在開發(fā)手機上調(diào)試好的頁面在其他手機會有這樣或那樣的...
    留七七閱讀 19,299評論 5 80
  • JS部分 var dpr, rem, scale;var docEl = document.documentEle...
    奈何138閱讀 476評論 0 0
  • 問題的由來 手機屏幕的分辨率差異很大。 iphone4:320×480 iphone6:375×667 H5 網(wǎng)頁...
    尚山夏香閱讀 2,412評論 0 1
  • 當(dāng)今交際中最卑微的名分 擔(dān)當(dāng)了寒冷中行駛的夜車 它驅(qū)散了前有堵截后有追兵的黑暗 臥在車底的 車輪把它碾碎
    文森林木閱讀 162評論 0 0