rem

聲明:學(xué)習(xí)和引用的原網(wǎng)址http://caibaojian.com/web-app-rem.html

一、什么是rem?

rem(font size of the root element)是一個(gè)相對(duì)于根元素<html>的字體單位。與px像素不同,它是一個(gè)相對(duì)單位,而rem是相對(duì)于根元素html,em則是相對(duì)于父元素。

二、為什么web app要使用rem?

1、實(shí)現(xiàn)強(qiáng)大的屏幕適配布局,能等比例適配所有屏幕:
2、沒(méi)有屏幕字體縮放問(wèn)題:
3、沒(méi)有em多次使用計(jì)算麻煩的問(wèn)題:

三、計(jì)算出不同分辨率下font-size的值的方法

1.媒體查詢@media

關(guān)于媒體查詢@media(css3):
使用 @media 查詢,你可以針對(duì)不同的媒體類(lèi)型定義不同的樣式。
@media 可以針對(duì)不同的屏幕尺寸設(shè)置不同的樣式,特別是如果你需要設(shè)置設(shè)計(jì)響應(yīng)式的頁(yè)面,@media 是非常有用的。
當(dāng)你重置瀏覽器大小的過(guò)程中,頁(yè)面也會(huì)根據(jù)瀏覽器的寬度和高度重新渲染頁(yè)面。

適用場(chǎng)景:改變不多的業(yè)務(wù)。
優(yōu)點(diǎn):只需要在做web app先統(tǒng)計(jì)自己網(wǎng)站有哪些主流的屏幕設(shè)備,然后去針對(duì)那些設(shè)備去做media query設(shè)置,就能實(shí)現(xiàn)適配。
缺點(diǎn):不能所有設(shè)備全適配。

核心代碼示例:

html {
    font-size : 20px;
}
@media only screen and (min-width: 401px){
    html {
        font-size: 25px !important;
    }
}
@media only screen and (min-width: 428px){
    html {
        font-size: 26.75px !important;
    }
}
@media only screen and (min-width: 481px){
    html {
        font-size: 30px !important; 
    }
}
@media only screen and (min-width: 569px){
    html {
        font-size: 35px !important; 
    }
}
@media only screen and (min-width: 641px){
    html {
        font-size: 40px !important; 
    }
}

2.js

有好幾個(gè)比較熱門(mén)的庫(kù)可以幫助我們解決移動(dòng)端自適應(yīng)可伸縮布局的問(wèn)題。

⑴.阿里團(tuán)隊(duì)開(kāi)源的一個(gè)庫(kù): lib-flexible
來(lái)自官方無(wú)奈的聲明

使用方法也簡(jiǎn)單:
1.引入官方庫(kù)(在所有資源加載之前執(zhí)行這個(gè)JS。執(zhí)行這個(gè)JS后,會(huì)在<html>元素上增加一個(gè)data-dpr屬性,以及一個(gè)font-size樣式。JS會(huì)根據(jù)不同的設(shè)備添加不同的data-dpr值,比如說(shuō)2或者3,同時(shí)會(huì)給html加上對(duì)應(yīng)的font-size的值,比如說(shuō)75px。)

<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>

2.還需要編寫(xiě)js函數(shù)或者scss語(yǔ)法來(lái)配合動(dòng)態(tài)的修改dpr,樣式就可以用rem了

⑵.viewport

使用方法:
1.在<header></header>中引入

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

2.編寫(xiě)js函數(shù)來(lái)動(dòng)態(tài)處理htmlfont-size,這個(gè)的代碼大家可以去網(wǎng)上搜。

// 設(shè)置頁(yè)面rem大小
    // 以設(shè)計(jì)圖( 750*1334 )尺寸寬度作為參考標(biāo)準(zhǔn)
    ;
    (function (doc, win) {
        var max = 750,
            docEl = doc.documentElement,
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function () {
                var clientWidth = docEl.clientWidth;
                if (!clientWidth) return;
                if (clientWidth >= max) {
                    docEl.style.fontSize = '100px';
                } else {
                    docEl.style.fontSize = 100 * clientWidth / max + 'px';
                }
            };
        if (!doc.addEventListener) return;
        win.addEventListener(resizeEvt, recalc, false);
        doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);

我兩個(gè)都嘗試了,感覺(jué)flexible好像是真的沒(méi)有viewport好用啊,可能是因?yàn)槲也粫?huì)計(jì)算dpr吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • rem這是個(gè)低調(diào)的css單位,近一兩年開(kāi)始嶄露頭角,有許多同學(xué)對(duì)rem的評(píng)價(jià)不一,有的在嘗試使用,有的在使用過(guò)程中...
    百度怎么用閱讀 1,167評(píng)論 0 4
  • 什么是Rem rem和em很容易混淆,其實(shí)兩個(gè)都是css的單位,并且也都是相對(duì)單位,現(xiàn)有的em,css3才引入的r...
    tobAlier閱讀 28,125評(píng)論 2 38
  • 【更新前言】很欣慰在看以前寫(xiě)的文章時(shí)能發(fā)現(xiàn)錯(cuò)誤,說(shuō)明自己進(jìn)步了,此次更新主要是重構(gòu)了文章,刪去了錯(cuò)誤的部分,更新了...
    果汁涼茶丶閱讀 5,256評(píng)論 4 16
  • 作者:HelKyle鏈接:http://www.w3cplus.com/css/when-to-use-em-vs...
    紅葉丶秋鳴閱讀 3,475評(píng)論 0 3
  • 天藍(lán)水藍(lán),奎籠就在眼前!靠近森林城市水路不到10分鐘的路程! 森林城市在身邊一晃而過(guò) 每天開(kāi)車(chē)從新馬共用的...
    樂(lè)陶陶_a077閱讀 617評(píng)論 0 0

友情鏈接更多精彩內(nèi)容