響應(yīng)式布局之rem

建議學(xué)習(xí)時長: 30分鐘
學(xué)習(xí)方式:深入

學(xué)習(xí)目標

  • 知道 rem 計算值的方式根蟹。
  • 知道如何用 rem 來做不同尺寸的屏幕的適配悯蝉。

詳細介紹

rem介紹

rem(font size of the root element)是指相對于根元素(即HTML元素)的字體大小的單位。
假設(shè)根元素的字體大小是10px, 則5rem的大小為 5*10=50px,例如

html{
  font-size: 10px;
}
p{
  width: 2rem; /* 2*10 = 20px;*/
  margin: 1rem;
}

rem來做不同尺寸的屏幕的適配

以前我們往往這樣做頁面:viewport width 設(shè)置為 device-width,然后選我們需要兼容設(shè)備的最小寬度(一般是320px)茎芋。根據(jù)這最小寬度來做頁面把沼。單位使用px和百分比。在寬度不同的設(shè)備上秩伞,頁面的字體大小逞带,內(nèi)容尺寸都是一樣的欺矫,不同的是,大屏的內(nèi)容間的空隙比小屏的大展氓。所以這樣做的缺點就是穆趴,頁面在某些尺寸的設(shè)備上顯示的效果不好。

如果用rem來頁面遇汞,我們會根據(jù)不同的設(shè)備寬度在根元素上設(shè)置不同的字體大小毡代。寬度越寬,字體越大勺疼。然后對原本使用px的地方使用rem來替換教寂。這樣,字體大小执庐,內(nèi)容尺寸酪耕,對隨著屏幕寬度的變大而變大。

具體做法

1 根據(jù)不同的設(shè)備寬度在根元素上設(shè)置不同的字體大小轨淌。
為了能將設(shè)計稿中的 px 方便的轉(zhuǎn)換為頁面中 rem迂烁,我設(shè)置 1rem 為 寬度為 640px 的設(shè)計稿中的 100px。代碼如下

;
(function(win) {
    var doc = win.document;
    var docEl = doc.documentElement;
    var tid;

    function refreshRem() {
        var width = docEl.getBoundingClientRect().width;
        if (width > 540) { // 最大寬度
            width = 540;
        }
        var rem = width / 6.4; 
        docEl.style.fontSize = rem + 'px';
    }

    win.addEventListener('resize', function() {
        clearTimeout(tid);
        tid = setTimeout(refreshRem, 300);
    }, false);
    win.addEventListener('pageshow', function(e) {
        if (e.persisted) {
            clearTimeout(tid);
            tid = setTimeout(refreshRem, 300);
        }
    }, false);

    refreshRem();

})(window);

還有一種方法會根據(jù) devicePixelRatio 設(shè)定 initial-scale 來放大 viewport递鹉,使頁面按照物理像素渲染盟步,提升清晰度。 代碼見這里

2 做頁面時
將設(shè)計稿的寬度縮放至 640px躏结。在上一步中却盘,1rem 為此時設(shè)計稿中 100px 的值。屏幕的寬度也就是 (640 / 100) = 6.4rem媳拴。

更多學(xué)習(xí)資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黄橘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屈溉,更是在濱河造成了極大的恐慌塞关,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件子巾,死亡現(xiàn)場離奇詭異帆赢,居然都是意外死亡,警方通過查閱死者的電腦和手機线梗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門椰于,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缠导,你說我怎么就攤上這事廉羔。” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵憋他,是天一觀的道長孩饼。 經(jīng)常有香客問我,道長竹挡,這世上最難降的妖魔是什么镀娶? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮揪罕,結(jié)果婚禮上梯码,老公的妹妹穿的比我還像新娘。我一直安慰自己好啰,他們只是感情好轩娶,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著框往,像睡著了一般鳄抒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椰弊,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天许溅,我揣著相機與錄音,去河邊找鬼秉版。 笑死贤重,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的清焕。 我是一名探鬼主播并蝗,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耐朴!你這毒婦竟也來了借卧?” 一聲冷哼從身側(cè)響起盹憎,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤筛峭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陪每,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體影晓,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年檩禾,在試婚紗的時候發(fā)現(xiàn)自己被綠了挂签。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡盼产,死狀恐怖饵婆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戏售,我是刑警寧澤侨核,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布草穆,位于F島的核電站,受9級特大地震影響搓译,放射性物質(zhì)發(fā)生泄漏悲柱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一些己、第九天 我趴在偏房一處隱蔽的房頂上張望豌鸡。 院中可真熱鬧,春花似錦段标、人聲如沸涯冠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功偿。三九已至,卻和暖如春往堡,著一層夾襖步出監(jiān)牢的瞬間械荷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工虑灰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吨瞎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓穆咐,卻偏偏與公主長得像颤诀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子对湃,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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