CSS-4: Flexbox佈局全解析

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

Flexbox佈局

它是一種廣受歡迎的佈局技術,使用方式為在 HTML 的父元素當中,寫入 display:flex 這行語法,即能夠讓子元素產生各種排列的方式。

現在考慮以下程式碼:

<div class="container">
<div class="box box1">First</div>
<div class="box box2">Second</div>
<div class="box box3">Third</div>
</div>
.container {
background-color: yellow;
}
.box {
font-weight: bold;
}
.box1 {
background-color: #FF0000;
}

.box2 {
background-color: #00FF00;
}

.box3 {
background-color: #00FFFF;
}

呈現效果:

raw-image

此時我們寫入那行語法。

.container {
background-color: yellow;
display: flex;
}

呈現效果:

raw-image

透過使用gap屬性一次在所有 Flex 項目之間新增空間:

.container {
background-color: yellow;
display: flex;
gap: 10px;
}

呈現效果:

raw-image

預設情況下,子元素的排列方式呈水平,因為flex-direction: 屬性的預設值為row

我們一一更改排列方向:

.container {
background-color: yellow;
display: flex;
gap: 10px;
flex-direction: column;
}

呈現效果:

raw-image

好,此時子元素皆佔據了整行螢幕,視覺效果不好,稍微修改一下:

.box {
font-weight: bold;
height: 60px;
width: 60px;
text-align: center;
}

呈現效果:

raw-image

好,接下來我們再改變一下父容器的內邊距,並且讓排列方向再次呈水平排列。

.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
}

呈現效果:

raw-image

好,接著我們要使用justify-content屬性,其根據項目對齊方式動態分配空間。其設定方式我們下面一一示範:

  1. flex-start
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: flex-start;
}

呈現效果:

raw-image
  1. flex-end
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: flex-end;
}

呈現效果:

raw-image
  1. center
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: center;
}

呈現效果:

raw-image
  1. space-between,均勻分配項目,第一個項目在開始位置,最後一個項目在結束位置。
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: space-between;
}

呈現效果:

raw-image
  1. space-around,在項目之間分配相等的空間。小方塊與父容器之間的間隔是小方塊彼此間隔的一半。
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: space-around;
}

呈現效果:

raw-image
  1. space-evenly每個小方塊之間和與父容器之間擁有相同的間隔。
.container {
padding: 10px;
background-color: yellow;
display: flex;
gap:6px;
flex-direction: row;
justify-content: space-evenly;
}

呈現效果:

raw-image
  • 這邊讀者可以將flex-direction: 設定為row-reverse ,關查一下效果。效果應該為 (主軸呈橫向,但反序排列)。
  • 對於flex-direction: column;概念相同,不過要先對父容器設定一個易於測試的高度。

好,接下來要講align-items屬性,即交叉軸的對齊方式。

在測試之前,我們稍微修改一下 CSS 的設定,讓我們更好觀察效果:

.container {
width: 300px;
height: 140px;
padding: 10px;
background-color: yellow;
display: flex;
gap:10px;
flex-direction: row;
align-items: flex-start; /* 請自行更換 */
.box {
font-weight: bold;
}
.box1 {
background-color: #FF0000;
height: 50px;
}

.box2 {
background-color: #00FF00;
height: 90px;
}

.box3 {
background-color: #00FFFF;
height: 30px;
}
  1. flex-start

呈現效果:

raw-image


  1. flex-end

呈現效果:

raw-image


  1. center

呈現效果:

raw-image
  1. baseline,對齊內容物的文字基線,請讀者個別設定每格子元素容器的行高再做測試:
.box1 {
background-color: #FF0000;
height: 50px;
line-height: 50px;
}

.box2 {
background-color: #00FF00;
height: 90px;
line-height: 30px;
}

.box3 {
background-color: #00FFFF;
height: 30px;
line-height: 40px;
}

呈現效果:

raw-image
  1. stretch,若小方塊不設定寬、高、間距,則充滿整個容器。請記得去掉小方塊個別設定的值。保留背景顏色即可。
raw-image

好,最後我們再提一個東西:inline-flex,設定成inline-flex 可以讓 Flexbox 僅佔據其內容所需的寬度,而不是拉伸整個寬度。

.container {
padding: 10px;
height: 200px;
background-color: yellow;
display: inline-flex;
}

.box {
font-weight: bold;
padding: 10px;
height: 100px;
}

.box1 {
background-color: #FF0000;
}

.box2 {
background-color: #00FF00;
}

.box3 {
background-color: #00FFFF;
}

呈現效果:

raw-image
留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
10會員
215內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News