css中的長度單位有哪些?css
px
, pt
,em
,rem
,%
, vw
,vh
,vmin
,vmcx
,ex
,ch
,cm
,mm
,in(inch)
,pc
···html
px
,
em
,
rem
,
%
四種,下文中咱們將對經常使用的長度單位重點分析,對很是用的長度單位簡單介紹。 首先咱們要知道css中的長度單位能夠分爲兩類:
相對長度單位 和
絕對長度單位 。
css相對長度單位中的 「相對」 二字,代表了其長度會隨着它的參考值的變化而變化,不是固定的。因此,在使用相對長度單位以前必定要知道其 參考元素 是什麼。web
思考:
1px
到底有多長?瀏覽器
關於px
的相關信息 《CSS像素、物理像素、邏輯像素、設備像素比、PPI、Viewport》 這篇文章中已經介紹的很詳細很詳細。下面對px
進行歸納總結。佈局
瀏覽器內的一切長度都是以CSS像素爲單位的,CSS像素的單位是px
,px
是一個相對單位,相對的是設備像素(device pixel),也就是物理像素,其相對性體如今在同一個設備上或在不一樣設備之間每1個px
所表明的物理像素是能夠變化的。字體
那麼
px
究竟是什麼?ui
px
實際是pixel(像素)的縮寫,根據 維基百科的解釋,它是圖像顯示的基本單元,既不是一個肯定的物理量,也不是一個點或者小方塊,而是一個抽象概念。因此在談論像素時 必定要清楚它的上下文!必定要清楚它的上下文!必定要清楚它的上下文!spa
不一樣的設備,圖像基本採樣單元是不一樣的,顯示器上的物理像素等於顯示器的點距,而打印機的物理像素等於打印機的墨點。而衡量點距大小和打印機墨點大小的單位分別稱爲ppi和dpi:操作系統
ppi:每英寸多少像素數,放到顯示器上說的是每英寸多少物理像素及顯示器設備的點距。.net
dpi:每英寸多少點。
關於打印機的點距咱們不去關心,只要知道 當用於描述顯示器設備時ppi與dpi是同一個概念 。
CSS像素的真正含義
因爲不一樣的物理設備的物理像素的大小是不同的,因此css認爲瀏覽器應該對css中的像素進行調節,使得瀏覽器中 1css像素的大小在不一樣物理設備上看上去大小老是差很少 ,目的是爲了保證閱讀體驗一致。爲了達到這一點瀏覽器能夠直接按照設備的物理像素大小進行換算,而css規範中使用 參考像素 來進行換算。
1參考像素即爲從一臂之遙看解析度爲96DPI的設備輸出(即1英寸96點)時,1點(即1/96英寸)的視角。它並非1/96英寸長度,而是從一臂之遙的距離處看解析度爲96DPI的設備輸出一單位(即1/96英寸)時視線與水平線的夾角。一般認爲常人臂長爲28英寸,因此它的視角是: (1/96)in / (28in * 2 * PI / 360deg) = 0.0213度。
因爲css像素是一個視角單位,因此在真正實現時,爲了方便基本都是根據設備像素換算的。瀏覽器根據硬件設備可以直接獲取css像素。
這個換算過程有些燒腦,感興趣的同窗本身去研究css規範。下面兩個不一樣設備物理像素轉換爲css像素的對比。
設備名稱 | 屏幕(設備)分辨率 | 瀏覽器最大寬度(css像素) |
---|---|---|
14英寸MacBook PRO | 2560dp x 1600dp | 1440px |
13.3英寸HP 440 G5 | 1366dp x 768dp | 1366px |
em
用來適應用戶所使用的字體,1em
至關於當前的字體尺寸(font-size
屬性),2em
相對於當前字體尺寸的2倍。
font-size
,則em
參考元素爲其父元素。font-size
,則逐級向上查找有設置font-size
屬性的元素,直到<html>
根元素。font-size
,則em
其參考大小爲瀏覽器默認大小 16px
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!--此處樣式可忽略-->
<style> .box-out { text-align: center;width: 240px;height: 120px;margin-top: 10px;margin-left: 10px; border: 1px solid dodgerblue; float: left;} .box-inner {text-align: center;width: 180px;height: 60px;margin-top: 10px;margin-left: auto; margin-right: auto;border: 1px solid darkorchid; } </style>
</head>
<body>
<div class="box-out">
16px字體(瀏覽器默認大小)
<div class="box-inner" style="font-size: 1em">
1em字體
</div>
</div>
<div class="box-out" style="font-size: 14px">
14px字體
<div class="box-inner" style="font-size: 1em">
1em字體
</div>
</div>
<div class="box-out" style="font-size: 14px">
14px字體
<div class="box-inner">
<span style="font-size: 1.5em">1.5em字體,至關於(14*1.5 = 21)px</span>
</div>
</div>
<div class="box-out" style="font-size: 24px">
24px字體
<div class="box-inner" style="font-size: 0.5em">
<span style="font-size: 1.5em">1.5em字體,至關於(24*0.5*1.5 = 18)px</span>
</div>
</div>
</body>
</html>
複製代碼
妙招:段落首行縮進兩個漢字
.indent {
text-indent: 2em;
}
複製代碼
rem
即 root em
,其參考元素爲文檔的根元素<html>
中font-size
屬性。
<html>
沒有設置font-size
屬性,那麼當前元素rem
相對於瀏覽器默認字體大小16px
<html style="font-size: 20px">
設置了font-size
屬性,那麼當前元素rem
相對於文檔的根元素<html>
<!DOCTYPE html>
<html lang="en" style="font-size: 20px">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!--此處樣式可忽略-->
<style> .box-out { text-align: center;width: 240px;height: 120px;margin-top: 10px;margin-left: 10px; border: 1px solid dodgerblue; float: left;} .box-inner {text-align: center;width: 180px;height: 60px;margin-top: 10px;margin-left: auto; margin-right: auto;border: 1px solid darkorchid; } </style>
</head>
<body>
<div class="box-out">
20px字體(文檔根元素字體大小)
<!--此時em也相對於<html>上面的fontSize-->
<div class="box-inner" style="font-size: 1em">
1em字體,至關於20px
</div>
</div>
<!--下面元素設置fontSize對子元素rem不起做用-->
<div class="box-out" style="font-size: 12px">
12px字體
<div class="box-inner" style="font-size: 1rem">
1rem字體,至關於20px
</div>
</div>
</body>
</html>
複製代碼
em
,rem
不只僅是用於控制當前字體的大小,能夠應用於各自能夠設置長度的屬性上,width、height···
在作頁面佈局時須要知道的幾個點:
width
是100%
,默認高度height
是 0
。100%
是相對其父元素的寬度,父元素的寬度相對更上一級元素的寬度。思考:爲何塊級元素默認高度
height
是0
而不是100%
?
瀏覽器是如何計算高度與寬度的?
Web瀏覽器在計算有效寬度時會考慮瀏覽器窗口的打開寬度。若是你不給寬度設定任何缺省值,那瀏覽器會自動將頁面內容平鋪填滿整個橫向寬度。即咱們不設置寬,會自動填滿整個橫向寬度。
高度的計算方式徹底不同。事實上,瀏覽器根本就不計算內容的高度,除非內容超出了視窗範圍(致使滾動條出現)。或者你給整個頁面設置一個絕對高度。不然,瀏覽器就會簡單的讓內容往下堆砌,頁面的高度根本就無需考慮。更多相關內容請閱讀 《爲啥你的height:100%不起做用?》
vh vw全稱爲Viewport Height和Viewport Width 意思就是視窗 ,vh、vw是相對於視口的高度和寬度。1vh 等於1/100的視口高度,1vw 等於1/100的視口寬度。
例如:瀏覽器高度900px,寬度爲750px, 1 vh = 9 px,1vw = 7.5 px。設置一個和屏幕同寬的標題,h1{font-size:100vw},那標題的字體大小就會自動根據瀏覽器的寬度進行縮放,以達到字體和viewport大小同步的效果。
vmin:vw和vh中較小的那個。 vmax:vw和vh中較大的那個。
例如,若是瀏覽器設置爲1100px寬、700px高,1vmin會是7px,1vmax爲11px。然而,若是寬度設置爲800px,高度設置爲1080px,1vmin將會等於8px而1vmax將會是10.8px
當前字體的x-height(當前字體小寫x的高度),在沒法肯定x高度的狀況下以0.5em計算。
數字0的寬度,沒法肯定時爲0.5em。
絕對長度單位是一個固定的值,它反應一個真實的物理尺寸。絕對長度單位視輸出介質而定,不依賴於環境(顯示器、分辨率、操做系統等)。
注:在平常web開發中絕對長度單位的使用場景着實太少,簡單瞭解便可。
釐米
毫米
英寸
點,確切的說法是一個專用的印刷單位「磅」,大小爲1/72英寸。用於印刷業。
派卡,至關於我國新四號鉛字的尺寸。