新手指南:深入了解 CSS 中的 rem 和 em 單位

更新日期: 2024 年 9 月 14 日

在設計網頁時,尺寸和間距的控制至關重要。

CSS 提供了多種單位來設置元素的大小,其中 rem 和 em 是兩個常用的相對單位。

理解它們的不同之處,可以幫助你更靈活地進行網頁布局和設計。

什麼是 em?

em 是一個相對單位,根據元素的當前字體大小來計算。如果沒有特別指定字體大小,則默認繼承自父元素。

例子

假設你有以下的 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>em 和 rem 單位示例</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <p class="text">這是一段文字,應用的是 1.5em 的字體大小。</p>
    </div>
</body>
</html>

CSS:

body {
  font-size: 16px;
}

.container {
  font-size: 2em; /* 32px */
}

.text {
  font-size: 1.5em; /* 24px */
}

在這裡:

  • body 的字體大小是 16px。
  • .container 的字體大小設定為 2em,這表示它是 body 字體大小的兩倍,即 32px。
  • .text 的字體大小為 1.5em,這將基於 .container 的字體大小計算,即 1.5 * 32px = 48px。

什麼是 rem?

rem 也是一個相對單位,但不同於 em,rem 是根據根元素(即 <html> 標籤)的字體大小來計算,無論這個單位在哪個元素中使用。

例子

假設你有以下的 CSS:

html {
  font-size: 16px;
}

.container {
  font-size: 2rem; /* 32px */
}

.text {
  font-size: 1.5rem; /* 24px */
}

在這裡,所有的 rem 計算都基於 html 的字體大小(16px):

  • .container 的字體大小是 2rem,即 32px。
  • .text 的字體大小是 1.5rem,即 24px。

與 em 不同,無論元素嵌套的層級有多深,rem 始終基於根元素計算,這使得它在整個頁面中更具一致性和可預測性。

rem 和 em 的選擇:什麼時候用哪個?

使用 em

當你希望元素的大小根據父元素動態調整時,em 是不錯的選擇。例如,你可能希望一個段落中的文字大小隨著父容器的字體大小變化。

例子:在組件設計中使用 em

當你設計可重用的組件時,使用 em 可以讓組件內部的元素根據容器的字體大小自動調整,這使得組件在不同的上下文中更靈活。

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

這樣,無論 button 放在哪個元素內,它的大小和間距都會根據父元素的字體大小自適應。

使用 rem

當你需要全局一致的尺寸時,rem 更加穩定。例如,你可以使用 rem 設置全局字體大小或間距,這樣即使在不同的嵌套層級,這些元素的大小仍然保持一致。

例子:建立響應式字體大小

使用 rem 可以更容易地建立響應式字體大小,因為你只需調整根元素的字體大小,整個頁面上的 rem 單位會自動隨之調整。

html {
  font-size: 100%; /* 等於 16px */
}

h1 {
  font-size: 2rem; /* 32px */
}

p {
  font-size: 1rem; /* 16px */
}

如果你將根元素的字體大小改為 125%(即 20px),h1 和 p 的字體大小會相應變為 40px 和 20px。

結語

理解 rem 和 em 的區別,能夠幫助你更好地控制網頁的可讀性和布局的靈活性。

當你開始設計或調整你的網頁時,記得選擇最合適的單位來達到預期的效果。

希望這篇文章能幫助你,更好地掌握這兩個重要的 CSS 單位!

Similar Posts