新手指南:了解 CSS align-items 與 align-self 的差異
更新日期: 2024 年 9 月 14 日
在使用 CSS Flexbox 進行布局時,align-items 和 align-self 是兩個非常實用的屬性。
它們都可以用來控制元素在容器中的對齊方式。
這篇文章將帶你了解這兩者的區別,以及如何使用它們來實現你想要的布局效果。
align-items 與 align-self 的差異
總結來說:
align-items
控制的是整個容器內所有子元素在交叉軸上的對齊方式。
當你想統一控制所有子元素的對齊時使用它。
align-self
則是針對單個子元素的對齊方式。
當你需要讓某個子元素與其他元素有不同對齊時使用它。
align-items 是什麼?
align-items 是一個 CSS 屬性,通常用來設定 Flex 容器內所有子元素(Flex Items)在交叉軸(Cross Axis)上的對齊方式。
交叉軸通常與主軸垂直,預設情況下是垂直方向。
align-items 的常見值
flex-start
所有子元素在容器的起始位置對齊(通常是上方)
flex-end
所有子元素在容器的結束位置對齊(通常是下方)
center
所有子元素在容器中居中對齊
baseline
子元素的文本基線對齊
stretch(默認值)
子元素將被拉伸以填滿容器(如果沒有設置固定高度)
例子:align-items 讓所有子元素居中對齊
.container {
display: flex;
align-items: center; /* 所有子元素在垂直方向居中 */
height: 300px;
}
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
在這個例子中,align-items: center; 讓所有 .item 元素在容器 .container 的垂直方向(交叉軸)上居中對齊。
align-self 是什麼?
align-self 是一個 CSS 屬性,讓你可以針對單個子元素(Flex Item)來覆蓋 align-items 的對齊方式。
換句話說,align-self 可以讓某個子元素與容器內的其他子元素有不同的對齊方式。
align-self 的常見值
align-self 的值與 align-items 是相同的,包括:
- flex-start
- flex-end
- center
- baseline
- stretch
例子:align-self 覆蓋單個元素的對齊方式
.container {
display: flex;
align-items: center; /* 所有子元素在垂直方向居中 */
height: 300px;
}
.item-special {
align-self: flex-end; /* 這個元素會在容器底部對齊 */
}
<div class="container">
<div class="item">Item 1</div>
<div class="item item-special">Item 2</div>
<div class="item">Item 3</div>
</div>
在這個例子中,儘管 align-items: center; 讓所有的 .item 元素都在容器中垂直居中。
但 .item-special 使用了 align-self: flex-end;,因此它會在容器底部對齊。
何時使用 align-items?
當你需要統一所有子元素的對齊方式時,例如讓所有的子元素在容器中居中對齊,這時候應該使用 align-items:
.container {
display: flex;
align-items: center; /* 所有子元素居中 */
}
何時使用 align-self?
當你需要覆蓋單個子元素的對齊方式時,例如讓某個子元素在容器的底部對齊,而其他元素依然居中對齊,這時候應該使用 align-self:
.item-special {
align-self: flex-end; /* 只有這個元素在底部對齊 */
}
結語
理解 align-items 和 align-self 的區別,能夠幫助你在 Flexbox 布局中,更靈活地控制元素的對齊方式。
無論是想統一控制所有子元素的對齊,還是針對單個元素進行調整,這兩個屬性都能夠讓你輕鬆實現你想要的布局效果。
希望這篇文章能幫助你更好地掌握這兩個重要的 CSS 屬性!