移動端適配小結

原文地址 http://blog.poetries.top/2017/11/05/mobile-layout

關注公眾號獲取更多資訊

一、為什么要做適配

  • 為了適應各種移動端設備李滴,完美呈現(xiàn)應有的布局效果
  • 各個移動端設備,分辨率大小不一致,網(wǎng)頁想鋪滿整個屏幕唐全,并在各種分辨下等比縮放

二、適配方案

  • 固定高度,寬度百分比適配-布局非常均勻盯荤,適合百分比布局
  • 固定寬度,改變縮放比例適配-什么情況都可以
  • Rem適配
  • 像素比適配

三焕盟、單位

  • em根據(jù)元素自身的字體大小計算,元素自身 16px 1em=16px
  • Rem R -> root 根節(jié)點( html ) 根據(jù)html的字體大小計算其他元素尺寸

四秋秤、百分比適配(常用)

固定高度,寬度百分比適配

  • 根據(jù)設置的大小去設置高度脚翘,單位可以用px 百分比 auto
  • 常用Flex布局
  • 百分比寬度

640設計稿為例灼卢,在外層容器上設置最大以及最小的寬

#wrapper {
    max-width: 640px; /*設置設計稿的寬度*/
    min-width: 300px;
    margin: 0 auto;
}

后面的區(qū)塊布局都用百分比,具體元素大小用px計算

  • 也就是寬度用百分比来农,高度用px
  • 高度以及圖片不要定死鞋真,讓它自動撐開

五、Rem適配(常用)

  • 根據(jù)屏幕的分辨率動態(tài)設置html的文字大小沃于,達到等比縮放的功能

  • 保證html最終算出來的字體大小涩咖,不能小于12px

  • 在不同的移動端顯示不同的元素比例效果

  • 如果htmlfont-size:20px的時候赶袄,那么此時的1rem = 20px

  • 把設計圖的寬度分成多少分之一,根據(jù)實際情況

  • rem做盒子的寬度抠藕,viewport縮放

head加入常見的meta屬性

<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!--這個是關鍵-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,minimum-scale=1.0">

把這段代碼加入head中的script預先加載

// rem適配用這段代碼動態(tài)計算html的font-size大小
(function(win) {
    var docEl = win.document.documentElement;
    var timer = '';

    function changeRem() {
        var width = docEl.getBoundingClientRect().width;
        if (width > 750) { // 750是設計稿大小
            width = 750;
        }
        var fontS = width / 10; // 把設備寬度十等分 1rem=10px
        docEl.style.fontSize = fontS + "px";
    }
    win.addEventListener("resize", function() {
        clearTimeout(timer);
        timer = setTimeout(changeRem, 30);
    }, false);
    win.addEventListener("pageshow", function(e) {
        if (e.persisted) { //清除緩存
            clearTimeout(timer);
            timer = setTimeout(changeRem, 30);
        }
    }, false);
    changeRem();
})(window)

布局細節(jié)

  • 結構用section區(qū)塊劃分更語義化
  • 然后在body設置寬度
body {
    width: 10rem;
    margin: auto;
}

后面的區(qū)塊都以百分比布局

<div class="wrapper">
   <header><header>
   <section><section>
   <section><section>
   <section><section>
   <section><section>
</div>
section,
header {
    width: 100%;
}

把視覺稿中的 px 轉(zhuǎn)換成 rem

首先蒋困,目前日常工作當中盾似,視覺設計師給到前端開發(fā)人員手中的視覺稿尺寸一般是基于 640px750px 以及 1125px 寬度為準雪标。甚至為什么零院?大家應該懂的(考慮Retina屏)

假定設計稿的大小為750,那么我們則將整個圖分成10等份來看村刨。<html> 對應的 font-size75px

html{
    font-size: 75px;
}
  • 這樣一來告抄,對于視覺稿上的元素尺寸換算,只需要原始的 px值 除以 rem基準值 即可

那么嵌牺,我們現(xiàn)在就可以比對設計稿打洼,比如設計稿中,有一個div元素逆粹,寬度募疮,高度都為20px,那么我們這樣寫即可(可以用 markman標準設計稿的元素大小)

div {
    height: 0.27rem; /*20/75*/
    width: 0.27rem;
}
  • 動態(tài)計算的rem最后會幫我們動態(tài)計算元素在不同屏幕下的寬高
  • 對于設計稿上的每個元素的尺寸在設計稿大小已知的時候僻弹,我們需要測量出阿浓,然后在用測量的寬高除以設計稿750的十分之一也就是75,得到我們想要的rem。而rem是根據(jù)屏幕動態(tài)變化的蹋绽,也就達到了適配的效果芭毙。也就是同一套設計稿運用在不同的設備上。

比如當我們切換到320設備大小的時候卸耘,這時候1rem=32px; div的像素實際是0.27*32=8.64px 0.27是我們在已知設計稿是750的情況下計算出來的退敦,rem用來動態(tài)計算而已

  • 對于margin padding line-height width height使用rem計算

如何快速計算

在實際生產(chǎn)當中,如果每一次計算 px 轉(zhuǎn)換 rem 鹊奖,或許會覺得非常麻煩

  • CSSREM 是一個CSSpx 值轉(zhuǎn) rem 值的Sublime Text3自動完成插件
  • 插件效果

[圖片上傳失敗...(image-4f244b-1545535128364)]

插件使用方法

  • 安裝

    • 下載本項目苛聘,比如:git clone https://github.com/flashlizi/cssrem
    • 進入packages目錄:Sublime Text -> Preferences -> Browse Packages...
    • 復制下載的cssrem目錄到剛才的packges目錄里。
    • 重啟Sublime Text
  • 配置參數(shù)

    • 參數(shù)配置文件:Sublime Text -> Preferences -> Package Settings -> cssrem
    • px_to_rem - px轉(zhuǎn)rem的單位比例忠聚,默認為40【根據(jù)設計稿來設置设哗,如設計稿750,我們?nèi)∈种患?code>75】两蟀。
    • max_rem_fraction_length - px轉(zhuǎn)rem的小數(shù)部分的最大長度网梢。默認為6
    • available_file_types - 啟用此插件的文件類型赂毯。默認為:[".css", ".less", ".sass"]战虏。

文字適配的解決方案

  • 對于一些標題性的文字拣宰,我們依然可以用rem。讓他隨著屏幕來進行縮放烦感,因為標題性文字一般較大巡社,而較大的文字,點陣對其影響就越小手趣。這樣晌该,即使出現(xiàn)奇怪的尺寸,也能夠讓字體得到很好的渲染绿渣。
  • 對于一些正文內(nèi)容的文字(即站在使用者的角度朝群,你不希望他進行縮放的文字)。我們采用px來進行處理

六中符、縮放比適配

固定寬度姜胖,改變縮放比例適配

  • 設計圖的寬度就是網(wǎng)頁顯示的寬度
  • 改變視口的縮放比例
  • 頁面寬度固定死
// 縮放比例適配方案--用這個代碼 
var width = window.screen.width,
    fixedW = 320, //設計稿寬度的一半
    scale = width / fixedW, // 縮放比例
    meta = document.createElement('meta'),
    metaAttr = {
        name : 'viewport',
        content : 'width='+fixedW+', initial-scale='+scale+', maximum-scale='+scale+', user-scalable=0'
    };
    for (var key in metaAttr) {
        meta[key] = metaAttr[key];
    }
    document.head.appendChild(meta);

七、像素比適配

  • window.devicePixelRatio
  • 物理像素是手機屏幕分辨率
  • 獨立像素 指css像素 屏幕寬度
  • 像素比 = 物理像素 / css寬度
  • 獲取設備的像素比 window.devicePixelRatio

八淀散、小結

關于移動端布局方案有很多右莱,rem和百分比運用最多的

相關文章閱讀

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市档插,隨后出現(xiàn)的幾起案子隧出,更是在濱河造成了極大的恐慌,老刑警劉巖阀捅,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胀瞪,死亡現(xiàn)場離奇詭異,居然都是意外死亡饲鄙,警方通過查閱死者的電腦和手機凄诞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忍级,“玉大人帆谍,你說我怎么就攤上這事≈嵩郏” “怎么了汛蝙?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朴肺。 經(jīng)常有香客問我窖剑,道長,這世上最難降的妖魔是什么戈稿? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任西土,我火速辦了婚禮,結果婚禮上鞍盗,老公的妹妹穿的比我還像新娘需了。我一直安慰自己跳昼,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布肋乍。 她就那樣靜靜地躺著鹅颊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪墓造。 梳的紋絲不亂的頭發(fā)上挪略,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音滔岳,去河邊找鬼。 笑死挽牢,一個胖子當著我的面吹牛谱煤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禽拔,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刘离,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睹栖?” 一聲冷哼從身側響起硫惕,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎野来,沒想到半個月后恼除,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡曼氛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年豁辉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(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
  • 我被黑心中介騙來泰國打工父晶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弄跌。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓甲喝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铛只。 傳聞我的和親對象是個殘疾皇子埠胖,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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