聊聊h5的移動端適配方案-rem

h5的移動端適配核心的問題有兩個:

1.因為目前手機(jī)品牌眾多跪者,手機(jī)的寬度不統(tǒng)一洛巢,所以第一個問題就是如何讓不同的手機(jī)顯示的內(nèi)容看起來是一樣的坡贺?

2.因為目前市場上的手機(jī)多數(shù)是高清屏,如何解決高清的問題翘瓮?

這篇文章將會介紹rem是如何解決這兩個問題贮折。

一、rem的簡介

rem是css3新增的屬性春畔,是一個相對單位(相對根節(jié)點html的字體大小來計算)脱货。比如:html的font-size為64px,2rem則是128px律姨。

二振峻、rem方案

這個方案本質(zhì)上是寬度等比適配,不同的手機(jī)通過動態(tài)的計算出html的字體大小來做等比換算择份,讓視覺(拿一部分出來扣孟,比如正方形)占手機(jī)寬度的比例在不同手機(jī)上是相等的,這樣就可以在不同手機(jī)上看起來是一個樣子荣赶。

動態(tài)計算html的字體大小的公式如下:

rem = document.documentElement.clientWidth * dpr / 10

說明:

1.乘以dpr凤价,是因為頁面有可能為了實現(xiàn)1px border頁面會縮放(scale) 1/dpr 倍(如果沒有,dpr=1)拔创。

2.除以10利诺,是為了取整,方便計算(理論上可以是任何值)剩燥。

3.根據(jù)這個公式可以知道慢逾,手機(jī)的clientWidth(屏幕寬度)和dpr(物理像素 / 設(shè)備獨(dú)立像素)決定了html的字體大小(基準(zhǔn)值)灭红。比如:

iphone3gs: 320px / 10 = 32px

iphone4/5: 320px * 2 / 10 = 64px

iphone6: 375px * 2 / 10 = 75px

這樣子假如一個針對iphone6的高清視覺稿 750×1334侣滩,如果有一個區(qū)塊,在psd文件中量出:寬高750×300px的div(寬度占滿屏幕)变擒,那么轉(zhuǎn)換成rem單位(rem = px / 基準(zhǔn)值):寬高為10x4rem君珠。這樣的rem在iPhone4中換算成px為640x256px(寬度也是占滿屏幕的)。

三娇斑、代碼實現(xiàn)

這個方案只需要在加載頁面的body的時候先執(zhí)行以下js代碼就可以做到適配的效果策添。

var dpr, rem, scale;

var docEl = document.documentElement;

var fontEl = document.createElement('style');

var metaEl = document.querySelector('meta[name="viewport"]');

dpr = window.devicePixelRatio || 1;

rem = docEl.clientWidth * dpr / 10;//基準(zhǔn)值

scale = 1 / dpr;

// 設(shè)置viewport,進(jìn)行縮放毫缆,達(dá)到高清效果

//理論上舰攒,1個位圖像素對應(yīng)于1個物理像素,圖片才能得到完美清晰的展示悔醋。

metaEl.setAttribute('content', 'width=' + dpr * docEl.clientWidth + ',initial-scale=' + scale+ ',maximum-scale=' + scale + ', minimum-scale=' + scale + ',user-scalable=no');

// 動態(tài)寫入樣式

docEl.firstElementChild.appendChild(fontEl);

fontEl.innerHTML = 'html{font-size:' + rem + 'px!important;}';

四摩窃、參考文章:https://sanwen8.cn/p/416glHZ.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芬骄,隨后出現(xiàn)的幾起案子猾愿,更是在濱河造成了極大的恐慌,老刑警劉巖账阻,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂秘,死亡現(xiàn)場離奇詭異,居然都是意外死亡淘太,警方通過查閱死者的電腦和手機(jī)姻僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門规丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撇贺,你說我怎么就攤上這事赌莺。” “怎么了松嘶?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵艘狭,是天一觀的道長。 經(jīng)常有香客問我翠订,道長巢音,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任尽超,我火速辦了婚禮官撼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘似谁。我一直安慰自己歧寺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布棘脐。 她就那樣靜靜地躺著斜筐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛀缝。 梳的紋絲不亂的頭發(fā)上顷链,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音屈梁,去河邊找鬼嗤练。 笑死,一個胖子當(dāng)著我的面吹牛在讶,可吹牛的內(nèi)容都是我干的煞抬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼构哺,長吁一口氣:“原來是場噩夢啊……” “哼革答!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起曙强,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤残拐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碟嘴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪食,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年娜扇,在試婚紗的時候發(fā)現(xiàn)自己被綠了错沃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栅组。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枢析,靈堂內(nèi)的尸體忽然破棺而出玉掸,到底是詐尸還是另有隱情,我是刑警寧澤登疗,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布排截,位于F島的核電站嫌蚤,受9級特大地震影響辐益,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脱吱,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一智政、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箱蝠,春花似錦续捂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至间校,卻和暖如春矾克,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憔足。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工胁附, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滓彰。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓控妻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揭绑。 傳聞我的和親對象是個殘疾皇子弓候,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 剛開始做移動端web開發(fā)的同學(xué)應(yīng)該都碰到過頁面適配問題,為什么我在開發(fā)手機(jī)上調(diào)試好的頁面在其他手機(jī)會有這樣或那樣的...
    留七七閱讀 19,362評論 5 80
  • 問題的由來 手機(jī)屏幕的分辨率差異很大他匪。 iphone4:320×480 iphone6:375×667 H5 網(wǎng)頁...
    尚山夏香閱讀 2,427評論 0 1
  • 一弓叛、meta標(biāo)簽的效果 移動端頁面一般會在head頭部添加如下meta標(biāo)簽。 該meta標(biāo)簽是否添加對頁面渲染的影...
    nimw閱讀 3,543評論 0 5
  • 移動設(shè)備瀏覽器的問題中心在于CSS诚纸,特別是viewport的尺寸撰筷。在移動設(shè)備上進(jìn)行網(wǎng)頁的開發(fā),首先得搞明白的就是移...
    勿以浮沙筑高臺閱讀 1,743評論 0 2
  • 琳purple閱讀 233評論 0 0