前端常用長度單位(px,em,rem,pt)介紹


CSS中有不少屬性是以長度作為值的。盒模型的屬性就是一些很明顯的值屬性:widthheightmarginpaddingborder。除此之外還有很多其他的CSS屬性的值同樣也是長度值,像偏移量(offset)、box-shadow的大小或者字體的大小、間距等。CSS中有哪些長度單位可以作為屬性的值呢?這樣的單位有很多。

 

絕對長度單位

px

.wrap { width: 400px; } 

像素或許被認為是最好的“設備像素”,而這種像素長度和你在顯示器上看到的文字屏幕像素無關。px實際上是一個按角度度量的單位

像素應該是設備和顯示器中顯示趨於一致,但是他越來越不正確。比如:在迷你ipad上顯示的網站和ipad本身顯示的網頁是一樣的,意味着如果那些設置的像素值標准化后就超出了窗口的范圍

在web上,像素仍然是典型的度量單位,很多其他長度單位直接映射成像素,最終,他們被按照像素處理,javascript語言里的單位就是使用的像素。

in

.wrap { width: 4in; } 

英寸是一個物理度量單位,但是在CSS領域,英寸只不過被直接映射成像素罷了。歡迎大家在評論中提供使用英寸做單位的實例,我會把這些實例添加到這里的,但是,到目前為止我還沒有見過哪個實例用的是英寸,當然也沒見過使用下面那些物理度量單位的實例。

1in == 96px 

cm

.wrap { width: 20cm; } 

對於世界上大多數的人來說,厘米是比較熟悉有用的物理度量單位。它也映射成像素

1cm == 37.8px 

mm

.wrap { width: 200mm; } 

毫米是個小數量級的物理度量單位。

1mm == 0.1cm == 3.78px 

相對字體的長度

Em

.wrap { width: 40em; } 

Em 是一個相對單位。起初排版度量時是基於當前字體大寫字母”M”的尺寸的。當改變font-family時,它的尺寸不會發生改變,但在改變font-size的大小時,它的尺寸就會發生變化。

在沒有任何CSS規則的前提下,1em的長度是:

1em == 16px == 0.17in == 12pt == 1pc == 4.2mm == 0.42cm 

如果有任何CSS規則改變了字體大小(不管在文檔的什么位置),1em的長度會變成相對於新的font-size的大小。

em單位有點古怪,當設置了font-size屬性后,它會逐級向上相乘,所以如果一個設置了font-size:1.1em的元素在另一個設置了font-size:1.1em的元素里,而這個元素又在另一個設置了font-size:1.1em的元素里,那么最后計算的結果是1.1X1.1X1.1=1.331rem(根em)。這意味着即使一個元素設置為10em,這個元素也不會在他出現的每個地方都是10em。如果font-size變化了,它可能會寬點,也可能會窄點。

rem

.wrap { width: 40rem; } 

Rem和em一樣也是一個相對單位,但是和em不同的是rem總是相對於根元素(如:root{}),而不像em一樣使用級聯的方式來計算尺寸。這種相對單位使用起來更簡單。

值得注意的瀏覽器支持問題: IE8,, Safari 4或 iOS 3.2中不支持rem單位。

points

.wrap { width: 120pt; } 

Point是一個物理度量單位,1pt=1/72 in.在CSS之外point是最常用的尺寸類型(可能這就是css支持point的原因)。它在語言里也很常見“當然他們把這個重要的信息設置成了小八號字體”。

在打印樣式表和物理媒介中,point是最有意義的,當然你也可以用在屏幕媒介上使用,或者其他的地方

值得注意的瀏覽器支持問題:在屏幕呈現pt尺寸的時候,會有很大的不同,這里有個關於IE6和firefox(可能是3.6版本)的對比。

pica

.wrap { width: 12pc; } 

Pica和points一樣,只不過1pc=12pt。

ex

.wrap { width: 60ex; } 

ex是一個基於當前字體的x字母高度度量的。ex度量時有時候根據字體自身的信息,有時候由瀏覽器指明是通過一個小寫字形來度量,最糟糕的情況是,它被設置成0.5em。它之所以被命名為“x”的高度,是因為是基於x字母的高度的。要理解x-height,想象一個小寫字母,比如“d”,它會有一部分翹起,x-height是不包括翹起的這一部分的,它的高度是那個字母最下面的那一部分。

和em不同,當改變font-family時em不會改變,而ex單位會變化,因為一個單位的值和那個字體是特殊的約束關系。

ch

.wrap { width: 60ch; } 

ch的內涵和x高度相似,只是ch是基於字符0的寬度的而不是基於字符x高度的。當font-family改變的時候ch也會隨着改變。

值得注意的瀏覽器支持問題:寫這篇文章的時候任何一個webkit內核的瀏覽器都不支持這個單位。

可視區百分比長度單位

vw

.wrap { width: 10vw; } 

vw是可視區寬度單位。1vw等於可視區寬度的百分之一。vw單位跟百分比很相似,不同的是vw的值對所有的元素都一樣,與他們父元素或父元素的寬度無關。有點像rem單位那樣總是相對於根元素。

這里有一篇文章,里面主要的使用實例就是可視區百分比單位

值得注意的瀏覽器支持問題:在移動瀏覽器中除了最新的iOS6支持這種單位外,其他的都不支持,這一點也適用於其他可視區相對長度單位。

vh

.wrap { width: 10vh; } 

vh和vw(viewport widht)單位一樣,不同的是vh是相對於可視區的高度。

vmin

.wrap { width: 20vmin; } 

vmin的值是當前vw和vh中較小的值。在標准尺寸類型的使用實例中,和由自己確定屏幕大小的vw、vh單位相比,vmin是一個更有用的度量標准。

vmax

.wrap { width: 20vmax; } 

Vmax的值是vw和vh中的較大的值。

值得注意的瀏覽器支持問題:webkit內核的瀏覽器支持vmin,不支持vmax。但是Firefox支持vmax。

離奇的長度單位

百分比

.wrap { width: 50%; } 

以百分比為單位的長度值是基於具有相同屬性的父元素的長度值。例如,如果一個元素呈現的寬度是450px,子元素的寬度設為50%,那么子元素呈現的寬度為225px。

雜言:百分比不是一個專門的長度單位,我把它也包括在本文中是因為百分比和長度關系很大。

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
原文: https://www.w3cplus.com/css/the-lengths-of-css.html © w3cplus.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM