有關(guān)Rem一些問(wèn)題小總結(jié)

配圖與內(nèi)容無(wú)關(guān)
本文主要是對(duì)Rem介紹與小結(jié)谱邪。

學(xué)習(xí)與參考了以下文章:

  1. AlloyTeam---移動(dòng)web適配利器-rem
  2. w3c---使用Flexible實(shí)現(xiàn)手淘H5頁(yè)面的終端適配
  3. 移動(dòng)web開發(fā)之像素和DPR
  4. 慕課網(wǎng)碧仔---Hello潭苞,移動(dòng)WEB

Rem是什么垛贤?

Rem是一個(gè)相對(duì)單位,依照html元素的字體大小進(jìn)行比例,類似的還有em(相對(duì)與它的父級(jí)進(jìn)行比例),vh躺同、vw儒陨、vmin、vmax(相對(duì)與視窗高笋籽、寬、最小椭员、最大進(jìn)行計(jì)算)簡(jiǎn)單的來(lái)說(shuō)车海,一個(gè)視窗為100vw,1vw = 1%;

Rem我能拿來(lái)做什么隘击?

Rem適合用來(lái)制作移動(dòng)端webApp對(duì)于各種不同分辨率的適配問(wèn)題上可以選用Rem侍芝,在對(duì)各種分辨率的移動(dòng)端也可謂是完美兼容。Rem由于相對(duì)與html的字體大小進(jìn)行比例的,這樣就比百分比和em布局相對(duì)來(lái)說(shuō)更加方便了埋同。如今手機(jī)分辨率各有不同州叠,在各種手機(jī)上又不能僅僅用響應(yīng)式布局的@media來(lái)進(jìn)行適配這樣對(duì)程序員太不友好,工作量大凶赁。

Rem下如何實(shí)現(xiàn)1像素咧栗?

進(jìn)行比例的rem在設(shè)備上往往做不到1像素線條逆甜,該如何解決呢?可以通過(guò)判斷dpr的比例然后對(duì)transform的scale進(jìn)行比例的設(shè)置致板。

//stylus下制作了一個(gè)mixin
@media (-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5){
    .border-1px{
        &::after{
            -webkit-transform:scaleY(0.7);
            transform: scaleY(0.7);
        }
    }
}

為什么在頭部設(shè)置mate也做到自適應(yīng)為啥還要用REM交煞?

在一部分像素比差不多的手機(jī)上看似適應(yīng),換到大屏高清設(shè)備上自適應(yīng)的問(wèn)題就會(huì)逐漸顯現(xiàn)斟或。如今手機(jī)型號(hào)眾多素征,屏幕像素不一罪魁禍?zhǔn)拙褪莇pr。然而之所與會(huì)自適應(yīng)是因?yàn)閂iewport它通過(guò)縮放御毅。

什么是DPI和PPI?

DPI與PPI都是表示單位英寸中像素密度端蛆。DPI主要用印刷行業(yè)每英寸的墨汁點(diǎn),PPI主要用于屏幕欺税,指每英寸像素密度。ppi越高像素越高揭璃,圖片越清晰晚凿。


ppi對(duì)比

什么是Retine高清屏瘦馍?

在接觸淘寶flexible后會(huì)有個(gè)retine高清屏方案,Retine高清屏是dpr大于等于2的都稱為高清屏情组。

什么是像素燥筷?

想了解像素比需要先了解像素。像素分為物理像素和邏輯像素(也可以稱作css像素)院崇。物理像素是設(shè)備的像素,邏輯像素是開發(fā)者抽象出來(lái)的像素肆氓,通俗比喻一下:邏輯像素是固定的1px,你的屏幕像素多大邏輯像素就多大底瓣,但是設(shè)備的像素又不一樣大,所以就會(huì)進(jìn)行縮放或者放大捐凭。如下圖所示。上面模擬器顯示的就是邏輯像素茁肠,下面的所說(shuō)的是物理像素。為什么不一樣呢垦梆?其原因是像素比仅孩。375x667的兩倍就是1334x750惋嚎。說(shuō)明了dpr為2。


iPhone6參數(shù)

什么是像素比另伍?

像素比(dpr) = 物理像素 / 邏輯像素(CSS像素);早期沒(méi)有這個(gè)概念温艇,當(dāng)時(shí)iphone4出了后有個(gè)叫做視網(wǎng)膜屏的時(shí)候當(dāng)時(shí)也不懂堕汞,覺(jué)得老牛了勺爱,后來(lái)知道是視網(wǎng)膜屏ppi大于320說(shuō)人眼看不到像素點(diǎn)讯检。其實(shí)也就是dpr大于等于2。

Rem兼容性人灼?

在兼容IE上面最少也要IE8以上,這樣更加證明了在做移動(dòng)端webApp上是完全不用擔(dān)心兼容的奈泪,所以現(xiàn)在rem在大多都是用來(lái)制作webApp灸芳。

Rem兼容對(duì)比圖

如何使用Rem涝桅?

lv1:自己手動(dòng)設(shè)置html的font-size然后根據(jù)設(shè)置的大小對(duì)后面的布局進(jìn)行設(shè)置烙样,這樣過(guò)于麻煩也不能做到適配。

lv2:利用JS來(lái)獲取屏幕大小然后根據(jù)屏幕來(lái)設(shè)置html的font-size,利用js加載有弊端债蜜,屏幕會(huì)跳一下,可以使用一個(gè)londing來(lái)等屏幕加載完后在顯示,顯然這樣的效果也不是很好儒洛。

//這個(gè)代碼有缺陷也沒(méi)做兼容,主要意思還是js動(dòng)態(tài)設(shè)置html的字體大小
(function (){
    size();
    window.onsize = function(){
        size();
    }
    function size(){
        var winW = document.documentElement.clientWidth || document.body.clientWidth;
        // 這里主要是把屏幕大小分成10份
        document.documentElement.style.fontSize = winW/10 + "px";
    }
})();

lv3:使用JS動(dòng)態(tài)設(shè)置html的font-size和meta卦停,給<html>元素添加data-dpr屬性向胡,并且動(dòng)態(tài)改寫data-dpr的值也就是淘寶的flexible的思想惊完。

//flexible實(shí)際上就是能過(guò)JS來(lái)動(dòng)態(tài)改寫meta標(biāo)簽,代碼類似這樣
var metaEl = doc.createElement('meta');
var scale = isRetina ? 0.5:1;
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
if (docEl.firstElementChild) {
    document.documentElement.firstElementChild.appendChild(metaEl);
} else {
    var wrap = doc.createElement('div');
    wrap.appendChild(metaEl);
    documen.write(wrap.innerHTML);
}

如何使用flexible拇派?

github上下載flexible然后引入。目前Flexible會(huì)將視覺(jué)稿分成100份(主要為了以后能更好的兼容vh和vw)件豌,而每一份被稱為一個(gè)單位a。同時(shí)1rem單位被認(rèn)定為10a茧彤。假設(shè)設(shè)計(jì)圖為750px。

1a   = 7.5px
1rem = 75px
750的設(shè)計(jì)圖

我想把加入購(gòu)物車按鈕用rem來(lái)設(shè)置曾掂,寬為150壁顶,高為48;rem寬為2rem高為0.64rem珠洗;

使用flexible的注意事項(xiàng)博助?

官方建議字體不要設(shè)置rem,用px來(lái)進(jìn)行設(shè)置富岳。

//官方介紹有sass和less沒(méi)有stylus,下面是stylus
//stylus設(shè)置mixin
font-dpr($font-size) {
    font-size: $font-size;
    [data-dpr="2"] &{
        font-size: $font-size * 2;
    }
    [data-dpr="3"] &{
        font-size: $font-size * 3;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚁飒,一起剝皮案震驚了整個(gè)濱河市萝喘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阁簸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件启妹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡桨啃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門照瘾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人析命,你說(shuō)我怎么就攤上這事√既矗” “怎么了队秩?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵馍资,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鸟蟹,道長(zhǎng)使兔,這世上最難降的妖魔是什么建钥? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任虐沥,我火速辦了婚禮,結(jié)果婚禮上镐依,老公的妹妹穿的比我還像新娘。我一直安慰自己槐壳,他們只是感情好喜每,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著带兜,像睡著了一般枫笛。 火紅的嫁衣襯著肌膚如雪刚照。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天海诲,我揣著相機(jī)與錄音檩互,去河邊找鬼特幔。 笑死闸昨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饵较。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼横辆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茄猫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起划纽,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎靖避,沒(méi)想到半個(gè)月后比默,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幻捏,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粘咖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年侈百,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钝域。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖路呜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胀葱,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布抵屿,位于F島的核電站,受9級(jí)特大地震影響搂抒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜求晶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一衷笋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧右莱,春花似錦、人聲如沸慢蜓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耘柱。三九已至如捅,卻和暖如春调煎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背士袄。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寓辱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓秫筏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親这敬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • 為什么模擬器下iP6的分辨率為375*667而設(shè)計(jì)圖一般給750*1334敷存? PPI:每英寸內(nèi)有多少物理像素點(diǎn)(設(shè)...
    LoveBugs_King閱讀 2,141評(píng)論 0 0
  • 剛開始做移動(dòng)端web開發(fā)的同學(xué)應(yīng)該都碰到過(guò)頁(yè)面適配問(wèn)題,為什么我在開發(fā)手機(jī)上調(diào)試好的頁(yè)面在其他手機(jī)會(huì)有這樣或那樣的...
    留七七閱讀 19,373評(píng)論 5 80
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案觅闽? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評(píng)論 1 92
  • 一蛉拙,flexible.js 的使用方式: github地址:https://github.com/amfe/lib...
    愿你如夏日清涼的風(fēng)閱讀 129,952評(píng)論 5 117
  • 一、meta標(biāo)簽的效果 移動(dòng)端頁(yè)面一般會(huì)在head頭部添加如下meta標(biāo)簽孕锄。 該meta標(biāo)簽是否添加對(duì)頁(yè)面渲染的影...
    nimw閱讀 3,547評(píng)論 0 5