CSS FlexBox 彈性盒子 | 梧所不學

更新於 發佈於 閱讀時間約 6 分鐘

網頁排版是前端開發中最令人頭痛的問題之一,以前我們會使用浮動(float)或定位(position)來排列元素,但這些方法往往需要繁瑣的調整。而本文介紹的 FlexBox(彈性盒子)則提供了一個更直覺、更高效的排版解決方法,讓複雜的網頁排版變得簡單許多。

FlexBox 是什麼?

FlexBox 是一種一維佈局模型,讓我們能夠輕鬆地在單一方向(行或列)上排列元素。FlexBox 有兩個重要的基本概念:

  1. 父容器(Flex 容器):設定 display: flex 的元素
  2. 子元素(Flex 項目):Flex 容器內的直接子元素

只要在父容器加上 display: flex;,容器底下的所有子元素就會自動變成 Flex 項目,並根據設定的規則排列。

FlexBox 的軸線

FlexBox 使用兩條軸線來決定元素的排列方式:

1. 主軸(Main Axis):決定元素的主要排列方向,預設是水平從左到右

2. 交錯軸(Cross Axis):垂直於主軸的方向,預設是垂直從上到下

FlexBox 容器屬性  

flex-direction

flex-direction 決定了子元素的主軸排列方向:

  • row(預設):子元素沿著水平方向從左到右排列。  
  • row-reverse:子元素沿著水平方向從右到左排列。
  • column:子元素沿著垂直方向從上到下排列。
  • column-reverse:子元素沿著垂直方向從下到上排列。
.container {
  display: flex;
  flex-direction: row; /* 水平排列(預設) */
}

justify-content

當 Flex 容器內的元素沒有填滿整個空間時,可以使用 justify-content 控制子元素在主軸上的對齊位置:

  • flex-start(預設):子元素靠主軸起點對齊。  
  • flex-end:子元素靠主軸終點對齊。  
  • center:子元素置中對齊。  
  • space-between:首尾對齊容器邊緣,子元素間距相等。  
  • space-around:每子個元素兩側留有相等空間。  
.container {
  display: flex;
  justify-content: center; /* 元素在主軸上置中 */
}

align-items

align-items 是用來控制子元素在交錯軸上的對齊位置:

  • stretch(預設):讓子元素拉伸填滿容器高度。  
  • flex-start:子元素靠交錯軸起點。  
  • flex-end:子元素靠交錯軸終點對齊。  
  • center:子元素沿交錯軸置中對齊。  
.container {
  display: flex;
  align-items: center; /* 元素在交錯軸上置中 */
}

flex-wrap

 flex-wrap 用來控制子元素是否換行:

  • nowrap(預設):不換行,可能會擠壓子元素
  • wrap:子元素會根據空間自動換行。
  • wrap-reverse:換行但順序反轉。
.container {
  display: flex;
  flex-wrap: wrap; /* 元素會自動換行 */
}

align-content

當有多行 Flex 項目時(啟用 flex-wrap: wrap),控制各行在交錯軸上的對齊方式:

  • stretch(預設):各行平均拉伸填滿容器。
  • flex-start:各行靠交錯軸起點對齊。  
  • flex-end:各行靠交錯軸終點對齊。  
  • center:各行置中對齊。  
  • space-between:各行首尾對齊,行與行間平均分布間距。  
  • space-around:各行兩側留有相等間距。  
.container {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between; /* 多行均勻分布 */
}

gap

gap 可以設定 Flex 子元素之間的間距,不影響與容器邊緣的距離:

.container {
  display: flex;
  gap: 10px; /* 所有子元素間距為10px */
  /* 也可以分別設定行列間距: gap: 10px 20px; */
}

FlexBox 子元素屬性

flex-grow

flex-grow 可以決定子元素如何分配剩餘空間:  

  • 0(預設):元素不會擴展。
  • 1 以上:數值越大,元素佔據的比例越多。
.item {
  flex-grow: 1; /* 平均分配剩餘空間 */
}

.important-item {
  flex-grow: 2; /* 分配到兩倍的剩餘空間 */
}

flex-shrink

當容器空間不足時,flex-shrink 會決定元素的縮小程度:  

  • 1(預設):子元素根據容器大小縮小。
  • 0:子元素不會縮小。
  • 2 以上:子元素縮小的程度更大。
.item {
  flex-shrink: 0; /* 空間不足時不縮小 */
}

flex-basis

flex-basis 用來設定子元素在主軸上的初始大小,可接受 px%auto 等單位:  

.item {
  flex-basis: 200px; /* 初始寬度/高度為200px */
}

align-self

可以使用 align-self 覆蓋 align-items 的設定,為單一元素設置不同的對齊方式:

  • auto(預設):繼承 align-items 設定。  
  • flex-start:靠交錯軸起點對齊。  
  • flex-end:靠交錯軸終點對齊。  
  • center:置中對齊。  
  • stretch:讓元素填滿交錯軸空間。
.special-item {
  align-self: flex-end; /* 只有這個元素靠底對齊 */
}

結語  

FlexBox 是一個功能強大的佈局工具,能讓開發者能夠輕鬆控制元素的排列方式,讓排版變得更加直覺和靈活。

avatar-img
63會員
26內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言
avatar-img
留言分享你的想法!
梧笙の領域展開 的其他內容
在網頁設計中,我們常需要讓元素在不同狀態下呈現不同的樣式,例如滑鼠移過按鈕時改變顏色,或是點擊連結後變更其外觀,而本文將要介紹的 CSS 偽類就能幫助我們做到這件事情。
本文要介紹的是 CSS 偽元素(Pseudo-elements),偽元素能讓開發者在不增加額外HTML 標籤的情況下,對元素的特定部位進行樣式設置或插入內容。
在網頁設計中,float和clear用於控制元素的排列與對齊。雖然現在多用Flexbox和Grid,但在維護舊專案時,仍然需理解它們的運作方式。
在 CSS 中,position 屬性決定了 HTML 元素在頁面上的定位方式,本文將介紹 position 屬性的 5 種值,以及它們的應用場景。
在 CSS 中,display 屬性決定了元素的顯示方式和佈局行為,透過設定不同的 display 值,你就可以控制元素的排列方式,從而實現各種佈局效果。
表格是網頁中用於組織和展示資料的元素,本文將介紹 CSS 的表格屬性,讓你可以控制表格的外觀和佈局,提升使用者的閱讀體驗。
在網頁設計中,我們常需要讓元素在不同狀態下呈現不同的樣式,例如滑鼠移過按鈕時改變顏色,或是點擊連結後變更其外觀,而本文將要介紹的 CSS 偽類就能幫助我們做到這件事情。
本文要介紹的是 CSS 偽元素(Pseudo-elements),偽元素能讓開發者在不增加額外HTML 標籤的情況下,對元素的特定部位進行樣式設置或插入內容。
在網頁設計中,float和clear用於控制元素的排列與對齊。雖然現在多用Flexbox和Grid,但在維護舊專案時,仍然需理解它們的運作方式。
在 CSS 中,position 屬性決定了 HTML 元素在頁面上的定位方式,本文將介紹 position 屬性的 5 種值,以及它們的應用場景。
在 CSS 中,display 屬性決定了元素的顯示方式和佈局行為,透過設定不同的 display 值,你就可以控制元素的排列方式,從而實現各種佈局效果。
表格是網頁中用於組織和展示資料的元素,本文將介紹 CSS 的表格屬性,讓你可以控制表格的外觀和佈局,提升使用者的閱讀體驗。
你可能也想看
Google News 追蹤
Thumbnail
靈感用盡、鍵盤不再響,盯著喜歡、分享、留言的數字,心跳跟著小鈴鐺七上八下⋯⋯vocus 2025 年 4 月限定新商品,要為創作者打氣! 🚨「創作者打氣包」 最懂創作者的vocus,為創作者打造 ✨ 打氣包,包什麼?!四件道具挺創作者 一、【打氣復活卷】 專屬你的打氣小語,成功登記免費
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
Thumbnail
在 Modern Web 的世界中,已經有非常多的套件、語法、框架,可以解決大部分網頁排版問題。 以我近期的觀察來說,在專案開發時,大部分公司會為了讓下一個接手、維護的開發者能更快上手專案架構,而採取原生的 CSS 寫法,而不是仰賴快速又方便的套件。
Thumbnail
靈感用盡、鍵盤不再響,盯著喜歡、分享、留言的數字,心跳跟著小鈴鐺七上八下⋯⋯vocus 2025 年 4 月限定新商品,要為創作者打氣! 🚨「創作者打氣包」 最懂創作者的vocus,為創作者打造 ✨ 打氣包,包什麼?!四件道具挺創作者 一、【打氣復活卷】 專屬你的打氣小語,成功登記免費
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
Thumbnail
在 Modern Web 的世界中,已經有非常多的套件、語法、框架,可以解決大部分網頁排版問題。 以我近期的觀察來說,在專案開發時,大部分公司會為了讓下一個接手、維護的開發者能更快上手專案架構,而採取原生的 CSS 寫法,而不是仰賴快速又方便的套件。