目錄
什麼是Flexbox?
容器上的常用屬性
2. flex-direction
3. justify-content
4. align-items
5. flex-wrap
6. align-content
項目上的常用屬性
1. flex-grow
2. flex-shrink
3. flex-basis
4. flex (簡寫)
5. align-self
常見佈局示例
1. 水平垂直居中
2. 導航欄(兩端對齊)
3. 等高列佈局
4. 聖杯佈局(頭部、內容、尾部)
實用技巧和注意事項
首頁 web前端 css教學 CSS Flexbox指南

CSS Flexbox指南

Jul 28, 2025 am 04:30 AM

Flexbox 是一種用於一維佈局的CSS 彈性盒子模型,通過設置容器為display: flex 來實現子元素的自動調整;1. 容器使用display: flex 定義彈性佈局;2. flex-direction 設置主軸方向;3. justify-content 控制主軸對齊;4. align-items 控制交叉軸對齊;5. flex-wrap 決定是否換行;6. align-content 管理多行對齊;項目可使用flex-grow、flex-shrink、flex-basis 調整大小,或通過flex 簡寫統一設置,align-self 實現單獨對齊;常見應用包括居中、導航欄、等高列和聖杯佈局,配合min-width: 0 和媒體查詢可解決溢出與響應式問題,該模型兼容性良好且易於掌握。

CSS flexbox guide

CSS Flexbox 是一種強大的佈局模型,特別適合在頁面上對齊、分佈和調整元素的大小。它讓響應式設計變得更簡單,尤其適用於一維佈局(行或列)。下面是一個實用的Flexbox 指南,幫你快速掌握核心概念和常用技巧。

CSS flexbox guide

什麼是Flexbox?

Flexbox(彈性盒子佈局)是一種CSS 佈局方式,通過設置容器為display: flex ,可以讓子元素自動調整大小和位置,以適應可用空間。

它主要由兩個部分組成:

CSS flexbox guide
  • 容器(Flex Container) :應用display: flex的父元素。
  • 項目(Flex Items) :容器內的直接子元素。

容器上的常用屬性

1. display: flex

開啟Flexbox 佈局。

 .container {
  display: flex;
}

注意: display: flex使容器成為塊級彈性容器, display: inline-flex則為行內彈性容器。

CSS flexbox guide

2. flex-direction

定義主軸方向(項目排列方向)。

 .container {
  flex-direction: row | row-reverse | column | column-reverse;
}
  • row (默認):從左到右
  • column :從上到下

3. justify-content

在主軸上對齊項目。

 .container {
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}
  • center :居中
  • space-between :兩端對齊,中間間距相等
  • space-around :每個項目周圍空間相等

4. align-items

在交叉軸上對齊項目(垂直方向,當主軸是橫向時)。

 .container {
  align-items: flex-start | flex-end | center | baseline | stretch;
}
  • center :垂直居中
  • stretch (默認):拉伸填滿容器(除非項目設置了高度)

5. flex-wrap

控制是否換行。

 .container {
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • wrap :允許換行
  • wrap-reverse :反向換行(從下往上)

6. align-content

當有多行時,控制行與行之間的對齊方式(需啟用flex-wrap: wrap )。

 .container {
  align-content: stretch | center | flex-start | flex-end | space-between | space-around;
}

項目上的常用屬性

1. flex-grow

定義項目的放大比例(默認為0,不放大)。

 .item {
  flex-grow: 1; /* 佔據剩餘空間*/
}

2. flex-shrink

定義項目的縮小比例(默認為1,空間不足時會縮小)。

 .item {
  flex-shrink: 0; /* 禁止縮小*/
}

3. flex-basis

設置項目在分配多餘空間前的初始大小。

 .item {
  flex-basis: 100px; /* 基礎寬度為100px */
}

可以設為auto (根據內容)或具體值(如20%150px )。

4. flex (簡寫)

flex-growflex-shrinkflex-basis的簡寫。

 .item {
  flex: 1; /* 等價於flex: 1 1 0% */
  flex: 0 1 auto; /* 默認值*/
  flex: 2 1 150px;
}

推薦使用簡寫形式,更簡潔。

5. align-self

允許單個項目覆蓋align-items的對齊方式。

 .item {
  align-self: center; /* 單獨居中*/
}

常見佈局示例

1. 水平垂直居中

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

一行代碼實現居中,比傳統方法簡單得多。

2. 導航欄(兩端對齊)

 .nav {
  display: flex;
  justify-content: space-between;
}

3. 等高列佈局

.row {
  display: flex;
}
.column {
  flex: 1;
  margin: 10px;
}

所有列高度自動一致,無需設置固定高度。

4. 聖杯佈局(頭部、內容、尾部)

 .layout {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.header, .footer {
  flex: 0 0 auto;
  height: 60px;
}

.main {
  flex: 1;
  background: #f0f0f0;
}

主內容自動填滿剩餘空間。


實用技巧和注意事項

  • 避免在flex 項目上設置width: 100% :可能會導致佈局異常,特別是當flex-basisflex-grow起作用時。
  • min-width: 0修復溢出問題:如果flex 項目內有長文本或固定元素,可能溢出容器。添加min-width: 0可讓項目正常收縮。
  • 響應式結合媒體查詢:用flex-direction: column在小屏幕上堆疊元素。
 @media (max-width: 768px) {
  .container {
    flex-direction: column;
  }
}

基本上就這些核心內容。 Flexbox 不復雜,但非常實用。多練習幾個佈局(比如卡片、導航、表單),很快就能熟練掌握。

別忘了瀏覽器支持良好(IE10 ),可以放心使用。

以上是CSS Flexbox指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個根據目標瀏覽器範圍自動為CSS屬性添加廠商前綴的工具。 1.它解決了手動維護前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設置browserslist、在構建流程中啟用;4.注意事項有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預處理器使用。

CSS教程,用於創建粘性標頭或頁腳 CSS教程,用於創建粘性標頭或頁腳 Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

什麼是圓錐級函數? 什麼是圓錐級函數? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

CSS教程,用於創建加載旋轉器和動畫 CSS教程,用於創建加載旋轉器和動畫 Jul 07, 2025 am 12:07 AM

創建CSS加載旋轉器的方法有三種:1.使用邊框的基本旋轉器,通過HTML和CSS實現簡單動畫;2.使用多個點的自定義旋轉器,通過不同延遲時間實現跳動效果;3.在按鈕中添加旋轉器,通過JavaScript切換類來顯示加載狀態。每種方法都強調了設計細節如顏色、大小、可訪問性和性能優化的重要性,以提升用戶體驗。

CSS教程專注於移動優先設計 CSS教程專注於移動優先設計 Jul 02, 2025 am 12:52 AM

Mobile-firstCSSdesignrequiressettingtheviewportmetatag,usingrelativeunits,stylingfromsmallscreensup,optimizingtypographyandtouchtargets.First,addtocontrolscaling.Second,use%,em,orreminsteadofpixelsforflexiblelayouts.Third,writebasestylesformobile,the

如何創建本質上響應的網格佈局? 如何創建本質上響應的網格佈局? Jul 02, 2025 am 01:19 AM

要創建內在響應式網格佈局,核心方法是使用CSSGrid的repeat(auto-fit,minmax())模式;1.設置grid-template-columns:repeat(auto-fit,minmax(200px,1fr))讓瀏覽器自動調整列數並限制每列最小和最大寬度;2.使用gap控制格子間距;3.容器應設為相對單位如width:100%、配合box-sizing:border-box避免寬度計算錯誤並用margin:auto居中;4.可選設置行高與內容對齊方式提升視覺一致性,如row

如何將整個網格集中在視口中? 如何將整個網格集中在視口中? Jul 02, 2025 am 12:53 AM

要讓整個網格佈局在視口中居中顯示,可通過以下方法實現:1.使用margin:0auto實現水平居中,需設定容器固定寬度,適用於固定佈局;2.利用Flexbox在外層容器設置justify-content和align-items屬性,結合min-height:100vh可實現垂直和水平居中,適合全屏展示場景;3.直接使用CSSGrid的place-items屬性在父容器上快速居中,簡潔且現代瀏覽器支持良好,同時需確保父容器有足夠高度。每種方式均有適用場景和限制,根據實際需求選擇合適的方案即可。

CSS中使用@supports的功能檢測是什麼? CSS中使用@supports的功能檢測是什麼? Jul 02, 2025 am 01:14 AM

prainuredetectionIncsssusissuse@supportScheckSifabRowsEsuppecifortSupecifortEfeatureBeforeApplyingReplyingStyles.1.itusesconditionalcsssssbasssbasedonproperty-valueperty-valuepairs,suessas@supports@supports@supports@supports(display:grid)

See all articles