rem和px轉(zhuǎn)換及開發(fā)中遇到的問題

一、rem和px轉(zhuǎn)換原理:

1草娜、若元素的寬度使用rem為單位羞迷,該元素在瀏覽器頁面中的實際寬度單位為px号醉,寬度的值計算公式為:

頁面中元素的px值 = html的fontsize * 元素的rem值

比如:

css代碼示例1

最終在瀏覽器加載頁面后div的寬度為:20 * 0.5=10px


那么反過來,css中元素的rem值的計算公式也就是:

元素的rem值 = 頁面中元素的px值  /  html的fontsize

可以理解為css中元素rem的值實際就是瀏覽器頁面中元素的px值與html的font-size的px值的比例蚂斤。

2存捺、使用了rem為單位的元素都會根據(jù)html的font-size的值計算盒模型的尺寸(px單位),當(dāng)改變html的font-size曙蒸,所有使用了rem的元素的也跟著重新計算捌治。例如:原本頁面html的font-size大小為17.664px

控制臺打印1

在控制臺中直接將html的font-size設(shè)置為40px后,使用了rem的元素都重新計算纽窟,尺寸也變大肖油,對比上圖頁面樣式變化如下:

控制臺打印2


3、開發(fā)時臂港,UI稿上元素的px值森枪,在css中為多少rem?

假設(shè):設(shè)計稿寬度為375px趋艘,設(shè)計稿上的元素尺寸為20px疲恢,屏幕寬度為375px(也就是設(shè)計稿與屏幕1:1),?

在css文件中若將html的font-size為37.5px瓷胧,那么根據(jù)第1點中提到的 rem計算公式显拳,到css文件中元素的寬度值為:20 / 37.5 rem。

但實際中手機屏幕寬度不只有375px這一個尺寸搓萧,那要怎么做的手機屏幕比較寬時杂数,元素的寬度按比例變寬呢宛畦?

4、根據(jù)屏幕的寬度與設(shè)計稿的比例揍移,計算不同寬度屏幕下html的font-size次和,屏幕寬度變大或者變小,html的font-size按比例變大變小那伐,使用了rem為單位的元素的寬度踏施,也會隨著html的font-size的變化而變化。

根據(jù)屏幕寬度與設(shè)計稿的比例罕邀,計算html的font-size

設(shè)計稿寬度px? /? 屏幕的寬度px? =? ?與設(shè)計稿等寬時的html的fontsize? /? x

與設(shè)計稿等寬時的html的fontsize:可以自己設(shè)定畅形,最好選擇比較好計算的37.5px

x :就為 不同屏幕寬度對應(yīng)的html的font-size的值

js代碼:

計算html font-szie的js代碼

二、問題情景:

加載頁面瞬間有一個縮放的過程诉探,問題出現(xiàn)的原因:

(1)首先瀏覽器加載css日熬,加入css中將html元素的fontsize設(shè)置為16px。

然后在去加載后面的dom元素肾胯,這時瀏覽器按照html的16px竖席,計算dom元素單位為rem的樣式屬性的px值,渲染一遍dom元素敬肚。

(2)瀏覽器執(zhí)行到我們加的計算html font-size的js代碼毕荐,綁定了DOMContentLoaded 事件,在dom加載完成觸發(fā)事件監(jiān)聽器又將html的font-size設(shè)置為22.08px帘皿。

html代碼截圖

瀏覽器會根據(jù)這個值又重新計算所有dom元素使用了rem的樣式屬性东跪,導(dǎo)致了重繪,才會有加載頁面瞬間縮放的現(xiàn)象鹰溜。

解決辦法

(1)在head中立即執(zhí)行將js計算html元素font-size的方法recalc

解決辦法js代碼

分析:加載完css文件虽填,css文件中將html元素的font-size設(shè)置為16px后,在head中立即執(zhí)行recalc方法(此時dom元素還沒有加載)曹动,將html元素的font-size設(shè)置為22.08px斋日,等到加載渲染dom元素時,是按照最終的22.08px計算單位為rem的樣式屬性墓陈,就不會在出現(xiàn)上面縮放現(xiàn)象恶守。


番外一:

如果仍保留在DOMContentLoaded事件中執(zhí)行recalc方法,但是把css文件中html的font-size設(shè)置為與UI稿中的大小相近(37.5px)贡必,縮放現(xiàn)象也會改善兔港,但是這樣只能保證與UI稿尺寸一致的屏幕。

番外二:

異步圖片仔拟,加上占位尺寸衫樊,否則會影響到后面的dom元素,圖片加載前、后科侈,圖片后面的元素會重新計算位置载佳,影響性能。


三臀栈、某些瀏覽器rem計算不準(zhǔn)確的問題

問題:存在部分安卓手機的部分瀏覽器(如小米qq蔫慧、魅族原裝、華為自帶瀏覽器等)存在rem計算有問題权薯,導(dǎo)致頁面元素整體寬度偏大與樣式不一致

解決方案一

將寬度姑躲、邊距的rem修改為百分比或者考慮彈性盒布局,高度最好由被內(nèi)部元素?fù)伍_崭闲,否則也需要兼容高度的rem計算不準(zhǔn)確問題肋联。width: 5rem; 改為: width: 50%;

解決方案二

根據(jù)不兼容的瀏覽器按照對應(yīng)比例縮小html 的font-size的大小,可以參考這篇文章的思路:

http://www.ccc5.cc/2145.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刁俭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子韧涨,更是在濱河造成了極大的恐慌牍戚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虑粥,死亡現(xiàn)場離奇詭異如孝,居然都是意外死亡,警方通過查閱死者的電腦和手機娩贷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門第晰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人彬祖,你說我怎么就攤上這事茁瘦。” “怎么了储笑?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵甜熔,是天一觀的道長。 經(jīng)常有香客問我突倍,道長腔稀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任羽历,我火速辦了婚禮焊虏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秕磷。我一直安慰自己诵闭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布跳夭。 她就那樣靜靜地躺著涂圆,像睡著了一般们镜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上润歉,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天模狭,我揣著相機與錄音,去河邊找鬼踩衩。 笑死嚼鹉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驱富。 我是一名探鬼主播锚赤,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褐鸥!你這毒婦竟也來了线脚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤叫榕,失蹤者是張志新(化名)和其女友劉穎浑侥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晰绎,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡寓落,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荞下。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伶选。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尖昏,靈堂內(nèi)的尸體忽然破棺而出仰税,到底是詐尸還是另有隱情,我是刑警寧澤会宪,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布肖卧,位于F島的核電站,受9級特大地震影響掸鹅,放射性物質(zhì)發(fā)生泄漏塞帐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一巍沙、第九天 我趴在偏房一處隱蔽的房頂上張望葵姥。 院中可真熱鬧,春花似錦句携、人聲如沸榔幸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽削咆。三九已至牍疏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拨齐,已是汗流浹背鳞陨。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞻惋,地道東北人厦滤。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像歼狼,于是被迫代替她去往敵國和親掏导。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349