說說 em-px-rem-vh-vw 的區別?

一、介紹

傳統的項目開發中,我們只會用到px%em這幾個單位,它可以適用於大部分的項目開發,且擁有比較良好的兼容性

CSS3開始,瀏覽器對計量單位的支持又提升到了另外一個境界,新增了remvhvwvm等一些新的計量單位

利用這些新的單位開發出比較良好的響應式頁面,適應多種不同分辨率的終端,包括移動設備等

二、單位

css單位中,可以分爲長度單位、絕對單位,如下表所指示

| CSS 單位 |
| | --- | --- | | 相對長度單位 | em、ex、ch、rem、vw、vh、vmin、vmax、% | | 絕對長度單位 | cm、mm、in、px、pt、pc |

這裏我們主要講述 px、em、rem、vh、vw

px

px,表示像素,所謂像素就是呈現在我們顯示器上的一個個小點,每個像素點都是大小等同的,所以像素爲計量單位被分在了絕對長度單位中

有些人會把px認爲是相對長度,原因在於在移動端中存在設備像素比,px實際顯示的大小是不確定的

這裏之所以認爲px爲絕對單位,在於px的大小和元素的其他屬性無關

em

em 是相對長度單位。相對於當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸未被人爲設置,則相對於瀏覽器的默認字體尺寸(1em = 16px

爲了簡化 font-size 的換算,我們需要在css中的 body 選擇器中聲明font-size= 62.5%,這就使 em 值變爲 16px*62.5% = 10px

這樣 12px = 1.2em, 10px = 1em, 也就是說只需要將你的原來的px 數值除以 10,然後換上 em作爲單位就行了

特點:

舉個例子

1<div class="big">
2    我是14px=1.4rem<div class="small">我是12px=1.2rem</div>
3</div>
4
5

樣式爲

1<style>
2    html {font-size: 10px;  } /*  公式16px*62.5%=10px  */  
3    .big{font-size: 1.4rem}
4    .small{font-size: 1.2rem}
5</style>
6
7

這時候.big元素的font-size爲 14px,而.small元素的font-size爲 12px

rem

rem,相對單位,相對的只是 HTML 根元素font-size的值

同理,如果想要簡化font-size的轉化,我們可以在根元素html中加入font-size: 62.5%

1html {font-size: 62.5%;  } /*  公式16px*62.5%=10px  */ 
2
3

這樣頁面中 1rem=10px、1.2rem=12px、1.4rem=14px、1.6rem=16px; 使得視覺、使用、書寫都得到了極大的幫助

特點:

vh、vw

vw ,就是根據窗口的寬度,分成 100 等份,100vw 就表示滿寬,50vw 就表示一半寬。(vw 始終是針對窗口的寬),同理,vh則爲窗口的高度

這裏的窗口分成幾種情況:

vwvh,比較容易混淆的一個單位是%,不過百分比寬泛的講是相對於父元素:

三、總結

「px」:絕對單位,頁面按精確像素展示

「em」:相對單位,基準點爲父節點字體的大小,如果自身定義了font-size按自身來計算,整個頁面內1em不是一個固定的值

「rem」:相對單位,可理解爲root em, 相對根節點html的字體大小來計算

「vh、vw」:主要用於頁面視口大小布局,在頁面佈局上更加方便簡單

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/LYCV3MtA2U-1HEX3G5yhWg