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
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!

































































本章介紹 HTML & CSS 中的表格 、列表 、表單以及偽類與偽元素 ,這些是 網頁結構與互動設計 的重要組成部分。透過這篇內容,你將學會如何有效地使用這些 HTML 元素,並透過 CSS 來 美化樣式與提升使用者體驗。
除了你現在知道的通用選擇器、類別選擇器、全域選擇器,我們還是有必要繼續探索其他的選擇器。 另外,Position佈局在CSS是一項重要的概念,本章將帶你完全學會與掌握這些現代網頁設計的關鍵技術!
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
這篇文章提供HTML基礎教學,涵蓋HTML基本架構、常用標籤、文字格式、圖片、表單、連結、HTML5語意標籤和class屬性等重要概念,並包含許多程式碼範例及輸出效果說明,適合初學者快速學習HTML網頁開發。
本章介紹 HTML & CSS 中的表格 、列表 、表單以及偽類與偽元素 ,這些是 網頁結構與互動設計 的重要組成部分。透過這篇內容,你將學會如何有效地使用這些 HTML 元素,並透過 CSS 來 美化樣式與提升使用者體驗。
除了你現在知道的通用選擇器、類別選擇器、全域選擇器,我們還是有必要繼續探索其他的選擇器。 另外,Position佈局在CSS是一項重要的概念,本章將帶你完全學會與掌握這些現代網頁設計的關鍵技術!
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
這篇文章提供HTML基礎教學,涵蓋HTML基本架構、常用標籤、文字格式、圖片、表單、連結、HTML5語意標籤和class屬性等重要概念,並包含許多程式碼範例及輸出效果說明,適合初學者快速學習HTML網頁開發。
你可能也想看
Google News 追蹤
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。