1. 程式人生 > >px、em、rem、%、vw、wh、vmin、vmax等單位有什麼區別?

px、em、rem、%、vw、wh、vmin、vmax等單位有什麼區別?

原文出處:https://blog.csdn.net/jnshu_it/article/details/77161717 (本文有修改)

1.背景介紹

傳統的專案開發中,我們只會用到px、%、em這幾個單位,它可以適用於大部分的專案開發,並且擁有比較良好的相容性。但是你知道嗎?從css3開始,瀏覽器對邏輯單位的支援又提升到了另外一個境界,增加了rem、vh、vw、vmin、vmax等一些新的長度單位,我們可以利用這些新的單位開發出比較良好的響應式頁面,隨之覆蓋多種不同解析度的終端,包括移動裝置等。現在讓我們來看下這些長度單位有什麼區別。

2.知識剖析

1、px

px就是pixel的縮寫,意為畫素。px就是一張圖片最小的一個點,一張點陣圖就是千千萬萬的這樣的點構成的,比如常常聽到的電腦畫素是1024x768的,表示的是水平方向是1024個畫素點,垂直方向是768個畫素點。

2、em

參考物是父元素的font-size,具有繼承的特點。如果自身定義了font-size按自身來計算(瀏覽器預設字型是16px),整個頁面內1em不是一個固定的值。

3、rem

css3新單位,相對於根元素html(網頁)的font-size,不會像em那樣,依賴於父元素的字型大小,而造成混亂。
(坑:當htmlfont-size 小於12px時,rem計算的結果不對,編大, 見下面的補充)

4、%

一般寬泛的講是相對於父元素,但是並不是十分準確。

1、對於普通定位元素就是我們理解的父元素

2、對於position: absolute;的元素是相對於已定位的父元素

3、對於position: fixed;的元素是相對於ViewPort(可視視窗)

5、vw

css3新單位,viewpoint width的縮寫,視窗寬度,1vw等於視窗寬度的1%。

舉個例子:瀏覽器寬度1200px, 1 vw = 1200px/100 = 12 px。

6、vh

css3新單位,viewpoint height的縮寫,視窗高度,1vh等於視窗高度的1%。

舉個例子:瀏覽器高度900px, 1 vh = 900px/100 = 9 px。

7vmin   (相容性較差)

css3新單位,當前較小的vw和vh

8vmax  (相容性較差)

css3新單位,當前較大的vw和vh

3.注意

1、vh vw 是不包含頁面滾動條的視窗寬度(innerwidth)

2、% 包含了滾動條的寬度在裡面了(outerwidth)。

一般的情況下%就可以滿足大部分自適應設計的需求,可以用height:100vh做一個高度佔滿螢幕的自適應,沒有滾動條。

用vw,vh設定的大小隻和視窗大小有關,所以用來開發多種螢幕裝置的應用用這個單位還是挺合適的。

【補充:用rem時要注意】
當html的font-size 小於12px時,rem計算的結果不對,編大,這是Chrome執行的效果

反而遭人嫌棄的IE沒有這個問題, 見下圖


要想知道各個單位的相容性問題可能去:https://caniuse.com 進行查詢