新手指南:了解 CSS 中的 justify-content 和 align-items 差異

更新日期: 2024 年 9 月 14 日

當你使用 CSS Flexbox 進行布局時,justify-content 和 align-items 是兩個非常重要的屬性。

它們都可以幫助你控制,子元素在容器中的排列方式。

但它們的作用方向,和應用場景有所不同。

這篇文章將為你詳細解釋這兩者的區別,幫助你更好地掌握 Flexbox 布局。

justify-content 是什麼?

justify-content 是用來控制子元素在主軸(主方向)上的排列方式

主軸的方向由 flex-direction 決定,默認情況下是水平方向(從左到右)。

圖片來源:mdn

justify-content 的可選值

flex-start

子元素排列在容器的起始位置(預設值)

flex-end

子元素排列在容器的結束位置。

center

子元素排列在容器的正中間。

space-between

子元素之間的間距平均分配,首個元素在起始位置,最後一個元素在結束位置。

space-around

子元素之間和兩端都有相同的間距,間距分配得較為平均。

space-evenly

子元素之間的間距均等分配,兩端和中間的間距相等。

例子

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>
.container {
  display: flex;
  justify-content: center;
}

在這個例子中,所有 .item 元素會在容器 .container 的水平方向(主軸)居中排列。

align-items 是什麼?

align-items 是用來控制子元素在交叉軸(次方向)上的排列方式。交叉軸的方向與主軸垂直,默認情況下是垂直方向(從上到下)。

圖片來源:mdn

align-items 的可選值

flex-start

子元素在交叉軸的起始位置對齊(通常是上方)

flex-end

子元素在交叉軸的結束位置對齊(通常是下方)

center

子元素在交叉軸的正中間對齊

baseline

子元素的基線對齊,通常用於文字

stretch

子元素將被拉伸以填滿容器(默認值),前提是子元素未設置固定高度。

例子

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>
.container {
  display: flex;
  align-items: center;
}

在這個例子中,所有 .item 元素會在容器 .container 的垂直方向(交叉軸)居中排列。

justify-content 和 align-items 的差異

總結來說:

  • justify-content 控制的是主軸方向上子元素的排列方式,通常是水平方向(但也可以通過 flex-direction 改變)。
  • align-items 控制的是交叉軸方向上子元素的排列方式,通常是垂直方向。

組合使用

通常,你會同時使用這兩個屬性來達到理想的布局效果。例如:

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
}

這段代碼會讓 .item 元素在 .container 中的水平方向和垂直方向上都居中對齊,從而達到元素完全居中的效果。

結語

理解 justify-content 和 align-items 之間的差異,是掌握 CSS Flexbox 布局的重要一步。

justify-content 處理主軸方向上的排列,align-items 處理交叉軸方向上的排列。

透過這兩個屬性,你可以輕鬆地控制元素的對齊方式,打造出精美的響應式布局。

希望這篇文章能幫助你更好地理解和使用這兩個重要的 CSS 屬性!

Similar Posts