認識CSS flex

更新 發佈閱讀 13 分鐘

我們現在常見的flex的語法有這些

display:flex //(注意:這裡如果沒設成flex,底下語法都無法使用喔!!!)

flex-wrap

flex-direction

flex-flow //(可以同時設定flex-direction和flex-wrap)

justify-content

align-item

align-content

align-self

order

flex (flex-grow、flex-shrink、flex-basis)

第一個:display:

還沒加入flex之前的樣式會是像圖片這樣,呈現縱向

vocus|新世代的創作平台

程式碼如下:

<!doctype html>

<html lang="en-US">

<head>

    <meta charset="utf-8" />

    <meta name="viewport" content="width=device-width" />

    <link href="test.css" rel="stylesheet" />

</head>

<body>

    <div class="ttp">

        <div class="test">I am jojo</div>

        <div class="test1">1</div>

        <div class="test2">2</div>

        <div class="test3">3</div>

        <div class="test4">4</div>

        <div class="test5">5</div>

    </div>

</body>

</html>
.ttp{

    height: 300px;

    margin: 30px;

}

.test{

    margin-top: 10px;

    margin-left: 20px;

    margin-right: 20px;

    margin-bottom: 10px;

    border: 6px solid red;

}

.test1{

    border:6px solid black;

    margin-left: 20px;

    margin-right: 20px;

}

.test2{

    border: 6px solid brown;

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test3{

    border: 6px solid rgb(59, 119, 164);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test4{

    border: 6px solid rgb(143, 59, 164);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test5{

    border: 6px solid rgb(59, 164, 64);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

那接下來是加入flex之後的樣式

程式碼:

<!doctype html>

<html lang="en-US">

<head>

    <meta charset="utf-8" />

    <meta name="viewport" content="width=device-width" />

    <link href="test.css" rel="stylesheet" />

</head>

<body>

    <div class="ttp">

        <div class="test">I am jojo</div>

        <div class="test1">1</div>

        <div class="test2">2</div>

        <div class="test3">3</div>

        <div class="test4">4</div>

        <div class="test5">5</div>

    </div>

</body>

</html>
.ttp{

    height: 300px;

    margin: 30px;

    display: flex;

}

.test{

    margin-top: 10px;

    margin-left: 20px;

    margin-right: 20px;

    margin-bottom: 10px;

    border: 6px solid red;

}

.test1{

    border:6px solid black;

    margin-left: 20px;

    margin-right: 20px;

}

.test2{

    border: 6px solid brown;

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test3{

    border: 6px solid rgb(59, 119, 164);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test4{

    border: 6px solid rgb(143, 59, 164);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

.test5{

    border: 6px solid rgb(59, 164, 64);

    margin-left: 20px;

    margin-right: 20px;

    margin-top: 10px;

}

加入之後的樣式會像圖下這樣:

vocus|新世代的創作平台

但我們加入flex之後文字就會變成橫向的








第二個:flex-wrap

我們用flex之後,會發現牠們會擠在同一列,所以我們可以加入flex-wrap,flex-wrap是用來告訴flex是否可以進行換行:

flex-wrap的程式碼如下:

nowrap  //預設

wrap //(換行)

wrap-reverse //(換行,且行順序反轉)

第三個:flex-direction

flex-direction決定的是內元件的「排列方向」

flex-direction的程式碼如下:

row //(預設值,由左至右,從上到下)

row-reverse //(排列方向和row一樣,但內元件順序會反轉)

column //(先從上到下,再由左至右)

column-reverse //(排列方向和column一樣,但內元件順序會反轉)

第四個:flex-flow

flex-flow是flex-directionflex-wrap的縮寫,它可以接受兩個屬性的值,沒有前後順序之分,中間用空格隔開即可

程式碼:

.ttp{

    height: 300px;

    margin: 30px;

    display: flex;

    flex-direction: column;

    flex-wrap: wrap;

}

可以寫成:

.ttp{

    height: 300px;

    margin: 30px;

    display: flex;

    flex-flow:column wrap;

}



第五個:justify-content

justify-content是用來控制flex「水平對齊」的位置,也就是主軸方向。

程式碼如下:

flex-start  //(預設值)會從主軸的起點開始排

flex-end //主軸的「終點」開始排

Center //排在「起點」和「終點」的中間

Space-around //平均分配「元素」位置,但左右兩側的間距會較小

Space-between //平均分配「元素」位置,但左右兩側會貼齊主軸的起點、終點

Space-evenly //元素」和「左右兩側」的間距皆相同

第五個:align-item

和jusitfy-content的用法類似,但它是用來控制「垂直對齊」的位置,也就是交錯軸方向

程式碼如下:

Stretch //(預設值,要測試請記得內元素不能設定height)

flex-start //從交錯軸的「起點」開始排

flex-end //從交錯軸的「終點」開始排

center //讓所有元素在「交叉軸」中間對齊

baseline //讓所有元素的文字基線(baseline)對齊

第六個:align-content

align-content是用來控制flex的「行」在「水平方向」的對齊位置,但是如果想要使用align-content的話,一定要設flex-wrap:wrap,因為它是控制「行」

程式碼如下:

stretch //為預設值,將美行拉伸已填滿剩餘空間

flex-start //從交錯軸的「起點」開始排

flex-end //從交錯軸的「終點」開始排

center //排在「起點」和「終點」的中間

space-around //是平均分配「行」的位置,但上下兩側的間距會較小

space-between //是平均分配「行」的位置,但上下兩側會貼齊交錯軸的起點、終點

space-evenly //是「元素」和「上下兩側」的間距皆相同

第七個:align-self

align-self和align-item的功能一樣,但它是針對「單一」對象

程式碼如下:

Stretch //(預設值,要測試請記得內元素不能設定height)

flex-start //會從交錯軸的「起點」開始排

flex-end //會從交錯軸的「終點」開始排

center //這會讓該元素在「交叉軸」的方向上單獨置中。

baseline //會讓元素對齊「文字的底線位置」

第八個:order

order預設值為0,它可以重新定義內元件的排列順序,順序會依照數值的大小排列



第九個:Flex (flex-grow、flex-shrink、flex-basis)

所謂的flex就是flex-grow、flex-shink、flex-basis的縮寫

flex-grow:空間有剩時,這個元素要「放大多少比例」去吃掉多餘空間。


flex-shink:空間不夠時,這個元素要「縮小多少比例」來配合容器。


flex-basis:主軸方向上的「初始大小」。

留言
avatar-img
睿哲楊的沙龍
2會員
18內容數
睿哲楊的沙龍的其他內容
2025/11/26
首先我們先聊聊margin&padding的差異之前,我們先可以先聊聊元素的外框 HTML裡的一個元素外面都有所謂的外框,依次分為margin、border、padding。而他們各自述職的位置對應不同的外邊界(ex:margin "方向分為上、右、下、左") 我們先聊聊margin,所謂的
Thumbnail
2025/11/26
首先我們先聊聊margin&padding的差異之前,我們先可以先聊聊元素的外框 HTML裡的一個元素外面都有所謂的外框,依次分為margin、border、padding。而他們各自述職的位置對應不同的外邊界(ex:margin "方向分為上、右、下、左") 我們先聊聊margin,所謂的
Thumbnail
2025/11/24
首先需要先購建構環境,那我們要先去安裝nvm。 至於nvm是什麼,nvm全名"Node Version Manager",是一款專門用來管理node.js版本的工具,他可以協助你安裝、切換、管理不同版本的Node.js 安裝nvm: 接著開啟終端機,按照下列步驟做: (也可直接搜尋pow
2025/11/24
首先需要先購建構環境,那我們要先去安裝nvm。 至於nvm是什麼,nvm全名"Node Version Manager",是一款專門用來管理node.js版本的工具,他可以協助你安裝、切換、管理不同版本的Node.js 安裝nvm: 接著開啟終端機,按照下列步驟做: (也可直接搜尋pow
2025/11/24
這次我們要來了解CSS 選擇棄權重 & 關係選擇器 CSS 選擇棄權重是指不同 CSS 選擇器之間,哪一條規則會優先生效 的「重要性分數」。 就是當多個CSS規則同時套用到同一個元素時,決定哪一個樣式「比較強」。 像是CSS: p { color: blue; } .text
Thumbnail
2025/11/24
這次我們要來了解CSS 選擇棄權重 & 關係選擇器 CSS 選擇棄權重是指不同 CSS 選擇器之間,哪一條規則會優先生效 的「重要性分數」。 就是當多個CSS規則同時套用到同一個元素時,決定哪一個樣式「比較強」。 像是CSS: p { color: blue; } .text
Thumbnail
看更多
你可能也想看
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
你是否在撰寫 CSS 時曾遇過寫了 Class name 卻沒有效果的詭異情況? 現在讓我們玩個小賭局吧(註1),猜猜看下方 HTML 搭配兩組 Class 樣式後,最終文字的顏色為何?猜錯的話,如果呈現為藍色,就請你的另一半去吃和牛 47,反之如果是紅色就請他 / 她吃 12mini 吧。
Thumbnail
你是否在撰寫 CSS 時曾遇過寫了 Class name 卻沒有效果的詭異情況? 現在讓我們玩個小賭局吧(註1),猜猜看下方 HTML 搭配兩組 Class 樣式後,最終文字的顏色為何?猜錯的話,如果呈現為藍色,就請你的另一半去吃和牛 47,反之如果是紅色就請他 / 她吃 12mini 吧。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
認識網頁的三大構造 在這個資訊爆炸的時代,網頁已經成為我們每天必須接觸的存在。不論是查資料、追劇,還是購物、社交,我們無時無刻都在和「網頁」互動。但你有沒有想過,一個網頁是如何被建構出來的呢? 其實,網頁的世界主要由三大基礎組成: HTML、CSS、JavaScript。它們就像是蓋房子的「
Thumbnail
認識網頁的三大構造 在這個資訊爆炸的時代,網頁已經成為我們每天必須接觸的存在。不論是查資料、追劇,還是購物、社交,我們無時無刻都在和「網頁」互動。但你有沒有想過,一個網頁是如何被建構出來的呢? 其實,網頁的世界主要由三大基礎組成: HTML、CSS、JavaScript。它們就像是蓋房子的「
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本篇是Tailwind CSS系列文章的第一篇,就用輕鬆的閒聊方式來認識一下Tailwind CSS,讓你知道它的魅力所在。Tailwind CSS是一種「Utility-First」的CSS設計模式,提供非常多預先定義好的class給開發者使用,直接加在HTML上就能直接使用,協助開發者更快的開發
Thumbnail
本篇是Tailwind CSS系列文章的第一篇,就用輕鬆的閒聊方式來認識一下Tailwind CSS,讓你知道它的魅力所在。Tailwind CSS是一種「Utility-First」的CSS設計模式,提供非常多預先定義好的class給開發者使用,直接加在HTML上就能直接使用,協助開發者更快的開發
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News