移動(dòng)端適配方案vw+rem(推薦)

前言

rem 這個(gè)單位對于前端來說并不陌生了,在移動(dòng)端適配方面,我們經(jīng)常會(huì)用到它,通常我們會(huì)采用類似淘寶flexible.js的方案, 寫px,然后通過插件轉(zhuǎn)化成rem赤套。

現(xiàn)在已經(jīng)許多兼容性問題現(xiàn)在不再那么頭疼了,因此我們現(xiàn)在有了更好的適配方案(不需要計(jì)算插件,不需要寫js代碼).

設(shè)置meta為移動(dòng)端

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

原理

vw表示1%的屏幕寬度,而我們的設(shè)計(jì)稿通常是750px的,屏幕一共是100vw,對應(yīng)750px,那么1px就是0.1333333vw褒搔;

為了方便計(jì)算,我們放大100倍,同時(shí)我們知道另一個(gè)單位rem,rem是相對html元素,為了方便計(jì)算,我們?nèi)tml是100px,通過上面的計(jì)算結(jié)果1px是0.13333333vw,那么100px就是13.333333vw了.

這樣后面的用rem就很好計(jì)算了,這樣就得到13.3333333vw對應(yīng)100px(750px的 設(shè)計(jì)稿),然后我們就可以很愉快的寫rem單位了, 由于倍率是100,我們也不需要啥計(jì)算插件之類的了,除以100,直接小數(shù)點(diǎn)向左移動(dòng)2位,1rem是100px,那么10px就是0.1rem,1px就是0.01rem合是;

不需要用postcss-px-to-viewport這種工具轉(zhuǎn)成一堆小數(shù)位特長的rem單位了,而且這個(gè)很方便,直接寫rem,并不需要轉(zhuǎn)換,用了轉(zhuǎn)換工具 如果想寫px的地方還得設(shè)置白名單或者黑名單,這個(gè)就不存在這種問題了, 想用相對的就rem,想絕對的就直接寫px即可,并不需要其他的各種設(shè)置。

ipad以上的兼容問題

此方案只能兼容手機(jī),甚至連ipad兼容都不好,當(dāng)然,此處的兼容不是兼容問題,是效果問題,只要兼容vw的設(shè)備都能用這個(gè)方案,但是由于適配的根本是vw這個(gè), 這個(gè)會(huì)隨著設(shè)備的寬度越來越大,那么用rem做單位的元素也會(huì)越來越大.

 @media screen and (min-width:560px) {
    html{
        font-size: 54px;
    }
}

為什么字體是54px以及為什么是560px為分界線,通過安裝flexible.js模擬出來的,flexible.js 在560px以上屏幕就是html{font-size:54px}

完整代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html {
            /* 向下兼容 不止vw時(shí)候 寫死font-size */
            font-size: 50px; 
            /* 7.5rem === 100vw */
            font-size: 13.33333333vw;
        }
        .app {
            width: 1rem;
            height: 1rem;
            background-color: black;
        }
        p {
            font-size: .28rem;
        }
        span{
            font-size: 28px;
        }

        @media screen and (min-width:560px) {
          html{
            font-size: 54px;
          }
        }

        /* pc*/
        @media screen and (min-width: 999px) {
            html{
                font-size: 100px;
            }
        }

    </style>
</head>

<body>
    <div class="app">

    </div>

    <p>REM</p>
    <span>REM</span>
</body>

</html>

擴(kuò)展

上面那種方式的媒體查詢方式是由小到大的方式励堡,如果我們所寫的頁面包含pc房匆,平板,手機(jī)三端漫萄,可以采用由大到小的方式書寫。代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html {
            font-size: 100px;
        }
        .app {
            width: 1rem;
            height: 1rem;
            background-color: black;
        }
        p {
            font-size: .28rem;
        }
        span{
            font-size: 28px;
        }

         /* 中等屏幕 */
        @media screen and (min-width:992px) and (max-width:1199px) {
          html{

          }
        }

        /* 平板 */
        @media screen and (min-width: 768px) and (max-width: 991px) {
            html {
                font-size: 54px;
            }
        }

        /* 手機(jī)*/
        @media screen and (max-width: 767px) {
            html{
                /* 向下兼容 不止vw時(shí)候 寫死font-size */
                font-size: 50px; 
                /* 7.5rem === 100vw */
                font-size: 13.33333333vw;
            }
        }

    </style>
</head>

<body>
    <div class="app"></div>
    <p>REM</p>
    <span>REM</span>
</body>

</html>

參考

最簡單的移動(dòng)端適配方案(rem+vw)

三種(rem)移動(dòng)端適配方案

移動(dòng)端布局(封裝rem和viewoint兩種情況適配)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盈匾,一起剝皮案震驚了整個(gè)濱河市腾务,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌削饵,老刑警劉巖岩瘦,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窿撬,居然都是意外死亡启昧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門劈伴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來密末,“玉大人,你說我怎么就攤上這事跛璧⊙侠铮” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵赡模,是天一觀的道長。 經(jīng)常有香客問我师抄,道長漓柑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮辆布,結(jié)果婚禮上瞬矩,老公的妹妹穿的比我還像新娘。我一直安慰自己锋玲,他們只是感情好景用,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惭蹂,像睡著了一般伞插。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盾碗,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天媚污,我揣著相機(jī)與錄音,去河邊找鬼廷雅。 笑死摆昧,一個(gè)胖子當(dāng)著我的面吹牛现斋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼张咳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了发绢?” 一聲冷哼從身側(cè)響起急迂,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎飞傀,沒想到半個(gè)月后皇型,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砸烦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年弃鸦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幢痘。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唬格,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颜说,到底是詐尸還是另有隱情购岗,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布门粪,位于F島的核電站喊积,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏玄妈。R本人自食惡果不足惜乾吻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一髓梅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绎签,春花似錦枯饿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至爸舒,卻和暖如春蟋字,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碳抄。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工愉老, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剖效。 一個(gè)月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓嫉入,卻偏偏與公主長得像,于是被迫代替她去往敵國和親璧尸。 傳聞我的和親對象是個(gè)殘疾皇子咒林,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

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