前端rem單位的正確使用姿勢

2021-07-26 05:43:17 字數 2743 閱讀 6918

原文

主題html

寫這篇文章是因為自己被rem這個坑絆過腳,因此特意去研究了下rem這個單位。

簡單闡述下px、em、rem之前的關係(其實網上很多,我這裡稍微提一下)。

先丟擲乙個問題:為什麼要選擇rem?

px:畫素是相對於顯示器螢幕解析度而言的相對長度單位。pc端使用px倒也無所謂,可是在移動端,因為手機解析度種類頗多,不可能乙個個去適配,這時px就顯得非常無力,所以就要考慮em和rem。

em:繼承父級的,假設html的font-size預設為16px,body字型大小定義為50%,那麼在body裡字型大小就是1em=8px了。可當你又定義了乙個div,然後把字型設定成了50%,請問,現在div下的1em等於多少?因為繼承了父級的值,現在這個div裡的1em=4px,這麼巢狀下去的話,抱歉,我數學不好!所有rem就出現了。

rem:是em的公升級版,rem只會相對html的值,不會受到父級的影響,這樣的好處在於:從em裡的例子來講,1rem始終會等於8px。使用的時候不需要重新計算rem此時的大小。rem因為是css3增加的,所以ie8或以下請無視(始終想不明白,為什麼國人至今對微軟都放棄的ie這麼戀戀不捨)。

以上也算是講清了他們之間的區別和關係,rem更多的運用於移動h5頁面的適配使用。

下面來說說怎麼更方便的使用rem和自己開文處提到的坑!

之前遇到的坑是這樣的。瀏覽器預設的字型大小都是16px(注意這裡),所以要使1rem=10px,那麼只要在html選擇器中宣告font-size=62.5%(10÷16*100%=62.5%)就可以直接使用1rem=10px單位進行換算,其實這個演算法是沒有錯的。可是,**來的自信讓每個瀏覽器預設字型都是16px????反正我也不知道自信哪來。。現在chrome預設大小可以是12px也可以是16px,那麼問題來了,國內瀏覽器,有幾個不是用的谷歌核心。所以html選擇器中宣告font-size=62.5%,1rem就等於10px的換算就有點坑爹了,對於我這種乙個畫素都糾結的人來說,很蛋疼。這坑是我當時買書學h5的時候預留下的後遺症,現在這個毛病還有,因為快和方便 t_t!真是矛盾。。。

坑可以填。rem單位還是可以變的容易換算和精準。所以就去找了些工具和資料。

因為rem是相對html的,那麼只要將html選擇器設定乙個絕對大小的值:比如在html選擇器設定font-size:20px;那麼1rem=20px(解釋下為什麼是20而不是其他的,首先10的倍數容易計算,那為什麼不是10本身而是20?現在chrome最小的字型是12px,所以10px是無效的,進一步就取20px);現在是不是和效果圖乙個畫素都不差?!!!

且要相容手機各個分別率,使用**查詢media 可以設定不同的大小,這樣在常規的裝置中都可以精準到每乙個畫素。

這麼換算來換算去好麻煩有木有!!所有發現了下面的換算工具,媽媽再也不用說我數學題不會做了!

下面是我直接在工具複製過來的現成rem換算適配**↓(設計稿寬度:640,字型值:20)

@media only screen and (max-width: 1080px), only screen and (max-device-width:1080px) 

} @media only screen and (max-width: 960px), only screen and (max-device-width:960px)

} @media only screen and (max-width: 800px), only screen and (max-device-width:800px)

} @media only screen and (max-width: 720px), only screen and (max-device-width:720px)

} @media only screen and (max-width: 640px), only screen and (max-device-width:640px)

} @media only screen and (max-width: 600px), only screen and (max-device-width:600px)

} @media only screen and (max-width: 540px), only screen and (max-device-width:540px)

} @media only screen and (max-width: 480px), only screen and (max-device-width:480px)

} @media only screen and (max-width: 414px), only screen and (max-device-width:414px)

} @media only screen and (max-width: 400px), only screen and (max-device-width:400px)

} @media only screen and (max-width: 375px), only screen and (max-device-width:375px)

} @media only screen and (max-width: 360px), only screen and (max-device-width:360px)

} @media only screen and (max-width: 320px), only screen and (max-device-width:320px)

} @media only screen and (max-width: 240px), only screen and (max-device-width:240px)

離線版本:

前端rem單位的使用研究

分析網易新聞手機web端,發現裡面大量使用了rem這個單位進行計算大小。針對rem這個單位有如下解析 px 畫素是相對於顯示器螢幕解析度而言的相對長度單位。pc端使用px倒也無所謂,可是在移動端,因為手機解析度種類頗多,不可能乙個個去適配,這時px就顯得非常無力,所以就要考慮em和rem。em 繼承...

前端rem單位的使用研究

分析網易新聞手機web端,發現裡面大量使用了rem這個單位進行計算大小。針對rem這個單位有如下解析 px 畫素是相對於顯示器螢幕解析度而言的相對長度單位。pc端使用px倒也無所謂,可是在移動端,因為手機解析度種類頗多,不可能乙個個去適配,這時px就顯得非常無力,所以就要考慮em和rem。em 繼承...

前端自適應 單位rem

通過使用,自我感覺網易的解決方案是最方便我們使用時候的計算。function factory function 注意 1.上邊解決方案,採用是750的psd設計 並不是網易的640 按照個人公司要求。2.此處1rem代表的是width 7.5 px 的結果,也就是750的100px,當我們在實際操作...