【Css】解析五種常見的相對單位

【Css】解析五種常見的相對單位

本篇重點

  • 常見的相對單位:%、em、rem、vh、vw
  • 相對單位的使用方式和時機

在 CSS 中,除了固定的像素單位(px)之外,還有許多相對單位可以根據父元素比例或視窗大小或元素字體自動調整,是現代響應式設計(RWD)不可或缺的工具。

%:父元素的相對比例

最基本的相對單位,常用來設定元素尺寸(例如 width、height、margin、padding 等),其值是相對於父元素對應屬性的比例,表示當父元素的尺寸改變時,使用百分比的子元素會隨之縮放。

範例

利用百分比設計圖片區塊,讓圖片隨著不同的螢幕寬度自適應

html
1
2
3
<div class="responsive-wrapper">
<img src="https://forgetfulengineer.github.io/gallery/covers/Understanding-five-Common-Relative-Units.png">
</div>
css
1
2
3
4
5
6
7
8
9
/* 寬度預設為 width: 100%,寬度隨螢幕寬度改變 */
.responsive-wrapper {
background-color: blue;
}

.responsive-wrapper img {
width: 80%; /* 圖片佔父容器 80% */
height: auto; /* 維持圖片比例 */
}

em:字體大小的相對單位

相對於當前元素或父元素字體大小的單位,常用於需要隨字體大小變化調整元素大小的排版,例如調整字體和內邊距,讓內、外邊距跟隨字體大小調整,保持整體視覺一致,或是設置多層次樣式,呈現層級關係時使用。

假設一個父容器的字體大小為 20px,子元素的 padding 設為 1.5em,則子元素實際的 padding 值為 30px,因為 1.5em * 20px = 30px

健忘筆記

em 的參照順序:

  1. 當前元素有設置 font-size,則 em 以當前元素的字體大小為基準。
  2. 若當前元素沒有設定 font-size,會沿著 DOM 樹逐層向上找,直到找到最近一個有 font-size 的父元素。
  3. 如果沒有找到設置的字體大小,則最終會參照根元素 <html>font-size。根元素默認值通常是 16px(但可透過 CSS 調整,例如 html { font-size: 10px; })。

範例

html
1
2
3
4
<div class="parent">
測試內容
<button class="child">我是按鈕</button>
</div>
css
1
2
3
4
5
6
7
8
.parent {
font-size: 30px;
}

button {
font-size: 0.5em;
padding: 0.5em 1em;
}

em:字體大小的相對單位

健忘筆記

em 是相對於當前元素或父元素字體大小的單位,如果父元素和當前元素同時使用 em,則當前元素屬性的大小會隨著層級增加而累積

rem:根元素字體大小的相對單位

rem(root em)是相對於根元素(通常是 <html>)字體大小的單位,統一的相對大小能確保在頁面中一致性設計。

假設根元素的字體大小為 20px,其子元素的 padding 設為 1.5rem,則子元素實際的 padding 值為 30px,因為 1.5rem * 20px = 30px

範例

html
1
2
3
4
<div class="container">
容器文字大小為 24px
<div class="child">子元素文字大小為 32px</div>
</div>
css
1
2
3
4
5
6
7
/* 根元素 font-size 預設 16px */
.container {
font-size: 1.5rem; /* 1.5 * 16px = 24px */
}
.child {
font-size: 2rem; /* 2 * 16px = 32px */
}

rem:根元素字體大小的相對單位

vhvw:用戶視窗高和寬的比例

相對於用戶視窗高度和寬度的單位,適合設計需要相對於視窗尺寸而調整的布局,讓元素能隨著不同裝置和瀏覽器窗口大小動態縮放,常用於設置全螢幕背景或全螢幕容器,例如:lightbox。

  • 1vh 表示視窗高度的 1%
  • 20vw 表示視窗寬度的 20%

範例

html
1
<img src="https://forgetfulengineer.github.io/gallery/covers/Understanding-five-Common-Relative-Units.png">
css
1
2
3
4
img {
height: 30vh; /* 視窗高度的 30% */
width: 50vw; /* 視窗寬度的 50% */
}

健忘筆記

  • 裝置旋轉的影響:vhvw 會根據視窗實際顯示區的高度和寬度來計算,因此旋轉裝置時,元素可能會突然變大或縮小。
  • 捲軸條影響:若瀏覽器視窗出現垂直或水平捲軸條,會佔據一定的寬度或高度,影響到 vwvh 的實際計算結果。

本網站的 lightbox 使用 vw 來控制寬度,可以點擊 實例搶先看文章圖片 查看元素的寬度~

結論

這些相對單位可以更靈活得設計響應式佈局,並確保網頁在不同設備和視窗大小上都能有適當的呈現。

  • %:父元素的相對比例
  • em:當前元素或父元素字體大小的相對單位
  • rem:根元素字體大小的相對單位
  • vhvw:用戶視窗高和寬的比例

延伸閱讀

【W3Schools】單位大全
【愛貝斯網路】RWD是甚麼?

作者

健忘工程師

發表於

2024-11-09

更新於

2024-11-09

許可協議


評論

複製完成