動態(tài) REM

設(shè)備像素(device pixel): 設(shè)備像素是物理概念,指的是設(shè)備中使用的物理像素。 比如iPhone 5的分辨率640 x 1136px痴鳄。
CSS像素(css pixel): CSS像素是Web編程的概念柏卤,指的是CSS樣式代碼中使用的邏輯像素。 在CSS規(guī)范中抖拴,長度單位可以分為兩類燎字,絕對(absolute)單位以及相對(relative)單位。px是一個相對單位阿宅,相對的是設(shè)備像素(device pixel)候衍。
設(shè)備像素縮放比(device pixel ratio):
1px = (dpr)2

  • dp
    比如iPhone 5使用的是Retina視網(wǎng)膜屏幕,使用2px x 2px的 device pixel 代表 1px x 1px 的 css pixel洒放,所以設(shè)備像素數(shù)為640 x 1136px蛉鹿,而CSS邏輯像素數(shù)為320 x 568px。
    參考鏈接: 前端工程師需要明白的「像素」 需要先弄清楚設(shè)備像素比了再往下看
    動態(tài) REM(僅以手機為例)
    淘寶在用的手機頁面方案(不是響應(yīng)式方案) REM
    是基于根元素html{font-zise: pageWidth;}
    pageWidth
    是頁面的寬度,可以通過這個API
    獲取到document.documentElement.clientWidth
    也就是說讓1rem–>pageWidth往湿,div{width: 0.5rem},div{font-size: 0.05rem;} 下面是構(gòu)造的代碼
    <head>

<meta charset="utf-8">

<title>JS Bin</title>

<script>

var pageWidth = document.documentElement.clientWidth

var style = document.createElement('style')

var content = 'html{font-size:'+pageWidth+'px;}'

style.innerHTML = content

document.head.appendChild(style)

</script>

</head>

<body>

<div class="half"></div>

<div class="full">hello world</div>

</body>

打開控制臺看到下面截圖中的妖异,構(gòu)造成功


title
title

上CSS代碼
*{margin: 0; padding: 0;}

.half{

width: 0.5rem;

height: 0.5rem;

background: red;

}

.full{

width: 1rem;

height: 1rem;

background: blue;

}

在電腦上面查看時,會看到寬度會存在一些差異领追;造成這樣的原因是滾動條他膳,它是html的,而不是body的,暫時還沒有想到能獲取不包含滾動條的方法 在手機上面是不會有滾動條出現(xiàn)的蔓腐,滾動條是自己感知的
如果手機頁面的寬度定為640px矩乐,字體是32px,換算成rem回论,32/640 =0.05rem 有點繁瑣散罕,能不能讓640rem–>100%? 假設(shè) 1rem –> 1000px(屏幕寬度) 640rem –> 1000px; ==> 1rem –> 1000/640
html
<body>

<div class="half"></div>

<div class="full">hello world</div>

</body>

css
.full{

width: 640rem;

height: 640rem;

background: blue;

font-size: 32rem;

}

js
<script>

var pageWidth = document.documentElement.clientWidth //1000

var style = document.createElement('style')

var content = 'html{font-size:'+pageWidth/640+'px;}'

style.innerHTML = content

document.head.appendChild(style)

</script>

運行之后會在頁面下方看到有滾動條出現(xiàn)


title
title

.full
的寬度達(dá)到了7680px 。傀蓉。欧漱。


title
title

html
里面的font-size

小于12px
<style>html{font-size:0.8578125px;}</style>

title
title

結(jié)論: 1. 在PC上面瀏覽器默認(rèn)字體大小是12px,若小于12px會自動提升到12px; 2. PC上 1rem 的值不要小于12px 葬燎,手機上面不會有這樣的限制
解決方案: 只要讓 1rem >= 12px 就行了 把這段代碼少除以一個10误甚,相應(yīng)的css代碼也一樣
var content = 'html{font-size:'+pageWidth/640+'px;}'

若還是小于則再除以一個2 對于程序員而言16是個整數(shù)缚甩,2^4 除以什么數(shù)和設(shè)計稿有關(guān),若是720px窑邦,除以的數(shù)最好可以和720有關(guān)
<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>JS Bin</title>

<script>

var pageWidth = document.documentElement.clientWidth //1000

var style = document.createElement('style')

var content = 'html{font-size:'+pageWidth/16+'px;}'

style.innerHTML = content

document.head.appendChild(style)

</script>

</head>

<body>

<div class="half">hello world hello world hello world</div>

<div class="half">hello world hello world hello world</div>

</body>

</html>

//css代碼

*{margin: 0; padding: 0;box-sizing:border-box;}

.half{

width: 8rem;

height: 4rem;

background: red;

border: 1px solid black;

float: left;

}

/*

*推理

*16rem-->100%

*8rem-->50%

*所以在任何設(shè)備上刷新都可以看到.half占頁面寬度的一半

*/

完整代碼展示
為了解決rem在進行單位換算上的麻煩問題抹蚀,設(shè)置html字體大小為font-size:62.5%盲再,默認(rèn)字體大小是16px, 即是16px*62.5%=10px;1rem=10px攒读; 比如1.2rem=12px,1.4rem=14px,1.6rem=16px.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匾寝,一起剝皮案震驚了整個濱河市侠碧,隨后出現(xiàn)的幾起案子息拜,更是在濱河造成了極大的恐慌,老刑警劉巖较幌,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揍瑟,死亡現(xiàn)場離奇詭異,居然都是意外死亡乍炉,警方通過查閱死者的電腦和手機绢片,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩急,“玉大人杉畜,你說我怎么就攤上這事纪蜒≈怨В” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵纯续,是天一觀的道長随珠。 經(jīng)常有香客問我,道長猬错,這世上最難降的妖魔是什么窗看? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮倦炒,結(jié)果婚禮上显沈,老公的妹妹穿的比我還像新娘。我一直安慰自己逢唤,他們只是感情好拉讯,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳖藕,像睡著了一般魔慷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上著恩,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天院尔,我揣著相機與錄音蜻展,去河邊找鬼。 笑死邀摆,一個胖子當(dāng)著我的面吹牛纵顾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栋盹,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼片挂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贞盯?” 一聲冷哼從身側(cè)響起音念,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躏敢,沒想到半個月后闷愤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡件余,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年讥脐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啼器。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡旬渠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出端壳,到底是詐尸還是另有隱情告丢,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布损谦,位于F島的核電站岖免,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏照捡。R本人自食惡果不足惜颅湘,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栗精。 院中可真熱鬧闯参,春花似錦、人聲如沸悲立。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽级历。三九已至释移,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寥殖,已是汗流浹背玩讳。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工涩蜘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熏纯。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓同诫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親樟澜。 傳聞我的和親對象是個殘疾皇子误窖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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

  • layout 和 screen的寬度 在比較遙遠(yuǎn)的時候,網(wǎng)頁還是在pc端流行秩贰,很少有人開發(fā)移動端網(wǎng)頁霹俺,所有網(wǎng)頁的寬...
    sunny519111閱讀 525評論 0 2
  • 這篇文章主要梳理阿里的動態(tài)rem方案。 需求: 在做手機頁面的時候毒费,經(jīng)常會遇到一個問題丙唧,那就是隨著智能手機的發(fā)展,...
    李悅之閱讀 858評論 0 0
  • rem是什么 rem(font size of the root element)是指相對于根元素的字體大小的單位...
    shadow123閱讀 490評論 0 0
  • 不是響應(yīng)式 動態(tài)rem的效果就是一套CSS 虛擬像素和物理像素 rem相對于root font-size root...
    林立鎮(zhèn)閱讀 442評論 0 1
  • 很小的時候觅玻,在電視上看到周杰倫想际,好像是他代言的一則方便面的廣告。溪厘。胡本。在之后聽到了菊花臺,沒有給我?guī)硖貏e的記憶畸悬。因...
    辰柃閱讀 380評論 0 1