尺寸單位

CSS Podcast - 008: Sizing Units

網頁是回應式媒介,但有時您可能需要控制其尺寸,以改善整體介面品質。例如限制行長度,以便提升可讀性。那麼,在像網頁這種彈性媒介中,要如何做到這一點呢?

在這種情況下,您可以使用 ch 單位,該單位等於在計算大小時,算繪字型中「0」字元的寬度。這個單位可讓您使用專門用於調整文字大小的單位限制文字寬度,進而無論文字大小為何,都能提供可預測的控制項。ch 單位是少數幾個可用於特定情境 (如本例) 的單位之一。

Numbers

數字用於定義 opacityline-height,甚至 rgb 中的顏色管道值。數字是無單位的整數 (1、2、3、100) 和小數 (.1、.2、.3)。

數字的含義取決於其所在的上下文。舉例來說,定義 line-height 時,如果未使用支援的單位定義,數字就會代表比率:

p {
  font-size: 24px;
  line-height: 1.5;
}

在這個範例中,1.5 等於 p 元素計算出的像素字型大小150%。也就是說,如果 pfont-size24px,系統會將行高計算為 36px

您也可以在下列位置使用數字:

  • 設定篩選器值時:filter: sepia(0.5) 會將 50% 棕褐色濾鏡套用至元素。
  • 設定不透明度時:opacity: 0.5 會套用 50% 不透明度。
  • 在色彩通道中:rgb(50, 50, 50),其中 0 到 255 的值可用於設定色彩值。查看色彩課程
  • 如要轉換元素:transform: scale(1.2) 會將元素縮放至初始大小的 120%。

百分比

在 CSS 中使用百分比時,您必須瞭解百分比的計算方式。舉例來說,width 會以百分比計算,計算方式為父項元素的可用寬度。

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%;
}

在上述範例中,假設版面配置使用預設的 box-sizing: content-boxdiv p 的寬度為 150px

如果將 marginpadding 設為百分比,無論方向為何,都會是父項元素寬度的一部分。

div {
  width: 300px;
  height: 100px;
}

div p {
  margin-top: 50%; /* calculated: 150px */
  padding-left: 50%; /* calculated: 150px */
}

在上述範例中,margin-toppadding-left 都會計算為 150px

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; /* calculated: 150px */
  transform: translateX(10%); /* calculated: 15px */
}

如果將 transform 值設為百分比,則會根據含有轉換集的元素。在這個範例中,ptranslateX 值為 10%width50%。首先,計算寬度會是多少:150px,因為它是父項寬度的 50%。接著,請取 150px10%,也就是 15px

尺寸和長度

如果您為數字附加單位,該數字就會變成維度。例如 1rem 是維度。在這個情況下,規格中將附加至數字的單位稱為維度符記。長度是指距離的維度,可以是絕對或相對。

絕對長度

所有絕對長度都會解析為相同的基準,因此無論在 CSS 中使用何處,都能預測長度。舉例來說,如果您使用 cm 調整元素大小,然後進行列印,與尺規比較後應該會發現結果正確無誤。請注意,由於像素大小的差異,物理單位 (例如 cmin) 無法在螢幕上以這些大小顯示。實體單位最適合用於列印樣式表單,因為在這種情況下,實體單位會更可靠。

div {
  width: 10cm;
  height: 5cm;
  background: black;
}

如果您列印這個頁面,div 會以 10x5 公分黑色矩形的形式列印。請注意,CSS 不僅可用於數位內容,也能用於設定列印內容的樣式。在設計平面媒體時,絕對長度非常實用。

單位 名稱 等同於
cm 公分 1 公分 = 96 像素/2.54
mm 毫米 1mm = 1/10 公分
Q 四分之一公釐 1Q = 1/40 公分
in 英寸 1 英寸 = 2.54 公分 = 96 像素
pc Picas 1pc = 1/6 吋
pt 積分 1pt = 1/72 吋
px 像素 1 像素 = 1/96 英寸

相對長度

相對於基值計算的相對長度,類似於百分比。與百分比不同的是,您可以根據相關的基礎大小 (例如預設字型大小或視窗尺寸) 定義大小。也就是說,CSS 有 ch 等單位,會以字型大小指標做為基礎,而 vw 則是根據可視區域 (瀏覽器視窗) 的寬度。由於回應式網頁的特性,相對長度在網頁上特別實用。

與字型大小相關的單位

CSS 提供實用的單位,可與算繪排版元素的大小相關聯,例如文字本身的大小 (em 單位) 或字型字元寬度 (ch 單位)。

單位 相對於:
em 相對於字型大小,1.5em 會比其父項的基礎計算字型大小大 50%。(過去是指大寫字母「M」的高度)。
rem 根元素的字型大小 (預設為 16px)。
ex 啟發式判斷元素目前計算出的字型大小,是否應使用 x-height、字母「x」或 .5em
rex 根元素的 ex 值。
cap 元素目前計算出的字型大小中,大寫字母的高度。
rcap 根元素的 cap 值。
ch 元素字型中窄字符的平均字元前進距離 (以「0」字符表示)。
rch 根元素的 ch 值。
ic 元素字型中全寬字符的平均字元前進距離,以「水」(CJK 水字義字形,U+6C34) 字符代表。
ric 根元素的 ic 值。
lh 元素的行高。
rlh 根元素的 lh 值。

文字 CSS 是 10x 的優質字型,其中包含升線高度、降線高度和 x-height 的標籤。x-height 代表 1ex,0 代表 1ch

可視區域相對單位

您可以使用可視區域 (瀏覽器視窗) 的尺寸做為相對基準。這些單位會將可用的檢視區域空間分割。

單位 相對於
vw 可視區域寬度的 1%。使用者會利用這個單位執行有趣的字型技巧,例如根據頁面寬度調整標題字型的大小,這樣當使用者調整大小時,字型也會調整大小。
vh 可視區域高度的 1%。例如,如果您有頁尾工具列,可以使用這個方法來排列 UI 中的項目。
vi 根元素內嵌軸中可視區域大小的 1%。軸是指寫入模式。在英文等橫向書寫模式中,內文軸為水平。在某些日文字體等垂直書寫模式中,內嵌軸會由上而下顯示。
vb 根元素的區塊軸中可視區域大小的 1%。若是區塊軸,則是語言的方向。英文等語言有垂直的區塊軸線,因為英文讀者會由上而下解析網頁。垂直書寫模式有水平區塊軸。
vmin 可視區域較小尺寸的 1%。
vmax 可視區域較大尺寸的 1%。
div {
  width: 10vw;
}

p {
  max-width: 60ch;
}

在本例中,div 會是可視區域寬度的 10%,因為 1vw 是可視區域寬度的 1%p 元素的 max-width60ch,也就是說,在計算的字型和大小中,寬度不得超過 60 個「0」字元。

可視區域相依單位的替代方案

只要可視區域大小不變,可視區域相對單位的值就會維持不變。不過,行動瀏覽器通常會顯示或隱藏 UI 元素,以便在小螢幕上盡可能顯示最多內容,而不會變更計算的中繼檢視點大小。您可以使用 viewport 相對單位的替代方案,以便考量這些對可見區域的變更。

個單元 等同於
lvwlvhlvilvblvminlvmax 大型檢視區單位,相對於檢視區的可視空間,且隱藏所有選用的瀏覽器 UI 元素。等於非變化版本的可視區域相對單位。只要可視區域大小不變,就不會改變。
svwsvhsvisvbsvminsvmax 相對於檢視區可見空間的小型檢視區單位,其中顯示所有可用的瀏覽器 UI 元素。只要可視區域大小不變,就不會改變。
dvwdvhdvidvbdvmindvmax 相對於可視區域目前可見空間的動態可視區域單位。瀏覽器 UI 元素顯示或隱藏時的變化。

容器相對單位

您可以使用元素容器的尺寸做為相對依據。這些單位會將可用的容器空間分割。這些屬性在容器查詢中很實用,可根據可用空間設定字型大小。

個單元 相對於
cqw 容器寬度的 1%。
cqh 容器高度的 1%。
cqi 容器內嵌大小的 1%。
cqb 容器的區塊大小的 1%。
cqmin 容器較小尺寸的 1%。
cqmax 容器較大尺寸的 1%。

其他單位

我們也指定了其他單位,用於處理特定類型的值。

角度單位

顏色模組中,我們討論了角度單位,這有助於定義角度值,例如 hsl 中的色調。這些函式也適用於轉換函式中的元素。

div {
  width: 150px;
  height: 150px;
  transform: rotate(60deg);
}

使用 deg 角度單位,您可以在中心軸上旋轉 div 90°。

div {
  background-image: url('a-low-resolution-image.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  div {
    background-image: url('a-high-resolution-image.jpg');
  }
}

解析度單位

在前述範例中,min-resolution 的值為 192dpidpi 單位代表「每英寸像素數」。這項功能的實用情境是偵測超高解析度的螢幕,例如在媒體查詢中偵測 Retina 螢幕,並提供更高解析度的圖片。

進行隨堂測驗

測驗您對尺寸的瞭解程度

下列何者是有效的維度?

公分
公分,有效的絕對尺寸。
ui
使用者介面不是 CSS 中的維度。
in
英寸,有效的絕對尺寸。
8 日
不是 CSS 維度
像素
像素,有效的絕對尺寸。
ch
字元單位,有效的相對維度。
ux
使用者體驗不是 CSS 中的維度。
em
字母「M」單位,有效的相對維度。
ex
字母「x」單位,有效的相對維度。

絕對單位和相對單位有何不同?

絕對值無法變更,但相對單位可以變更
絕對值可以變更,但用於計算的基礎則無法變更。
絕對長度會根據單一共用基準值計算,相對單位會與可能變動的基準值進行比較。
相對單位可根據情境進行調整,因此更具彈性,但絕對單位可提供強大的功能和可預測性,可為特定設計奠定基礎。

可視區域單位為絕對值。

雖然這些屬性看起來是絕對值,但實際上是相對於視窗而言,而視窗可能是 iframe 或 WebView,也不一定代表裝置螢幕大小。
這些值會相對於建立時使用的文件視窗,而該視窗不一定與裝置螢幕相同。

資源