Flexbox彈性盒模型詳解

導(dǎo)讀

  • Flexbox背景
  • 基礎(chǔ)概念(重點)
  • 彈性容器屬性(重點)
  • 彈性項目屬性(重點)

Flexbox背景起源

2017年10月,W3C推薦使用Flexbox模板寫布局。
在此之前,我們的布局模型有三種:

  • 流動布局
  • 浮動布局
  • 定位布局
    以上三種布局的共同點是:基于元素方向
  • 塊元素:自上而下
  • 行內(nèi)元素:自左而右
  • 在布局的時候,父元素對子元素幾乎沒有什么掌控力,這句話的意思是說,在布局方面,父元素之間的關(guān)系不夠緊密。

Flexbox的目的

為各種顯示設(shè)備和屏幕尺寸提供一種更高效的布局方式,來處理元素的布局及元素之間的空間。

核心思想
賦予父元素一種超能力,讓父元素具有改變子元素的能力:

  • 改變子元素的尺寸
  • 改變子元素的位置
  • 改變子元素的排序
  • 改變子元素之間的空白

概念基礎(chǔ)

彈性盒模型.png

彈性盒模型 - 彈性盒模型它指是一套css屬性規(guī)則,而不是一個css屬性。具體來講,
分為兩組屬性:

  • 彈性容器屬性
  • 彈性項目屬性

彈性容器 - 被設(shè)置了display:flex的元素成為彈性容器。彈性容器對于子元素有掌控力。
彈性項目 - 彈性容器的子元素被稱為彈性項目。彈性項目受到父級元素的控制。

主軸 - 彈性項目排列的軸,多個彈性項目從主軸起點向主軸終點排列。
垂直軸 - 垂直于主軸的軸就是垂直軸

主軸起點 - 多個彈性項目沿主軸分布的起始點
主軸起點

垂直起點 - 多個彈性項目沿垂直軸分布的起始點
垂直起點

1.display:flex

[圖片上傳失敗...(image-be4da9-1668844991417)]

2.flex-wrap

[圖片上傳失敗...(image-11f9f4-1668844991417)]
定義
flex-wrap用于定義轉(zhuǎn)折的方式。

語法

.container{
  flex-wrap: nowrap  |  wrap | wrap-reverse
}
  • nowrap:不換行。所有彈性項目根據(jù)顯示在一起內(nèi)。默認(rèn)值。
  • wrap:向垂直軸終點方向換行。彈性項目根據(jù)彈性容器的寬度自動換行。
  • wrap-reverse:向垂直軸起點方向換行。彈性項目根據(jù)彈性容器的寬度自動換行。

3.flex-direction

[圖片上傳失敗...(image-338767-1668844991417)]
定義
用于設(shè)置彈性盒模型的主軸方向。

語法

.container{
   flex-direction:row | row-reverse | column | column-reverse
}
  • row:默認(rèn)值。彈性項目從左向右,從上向下排列。
  • row-reverse:彈性項目從右向左,從上到下排列。
  • column :把主軸設(shè)為縱軸。彈性項目從上向下,從左向右排列。
    column-reverse:把主軸設(shè)為縱軸,彈性項目從下向上排,從左向右排列。

4.justify-content

[圖片上傳失敗...(image-a6d83d-1668844991417)]
定義
用于設(shè)置彈性項目的排列方式。

語法

.container{
  justify-content:flex-start | flex-end | center | space-between | space-around | space-evenly
}
  • flex-start: 彈性項目從主軸的起點向終點排列。
  • flex-end:彈性項目從主軸終點向主軸起點排列。(順序不變)
  • center:彈性項目沿主軸居中排列。
  • space-between: 彈性項目從主軸起點到主軸終點均勻分布。
  • space-around:把空白平均分配到彈性項目兩側(cè)。
  • space-evenly:把空白平均分配到彈性項目之間。(任意兩個彈性項目之間的空白是相等的)

5. align-items

[圖片上傳失敗...(image-9977f9-1668844991417)]
定義
align-items用設(shè)置彈性項目沿垂直軸對齊方式
語法

.conteiner{
align-items:flex-start | flex-end | center | stretch | baseline
}
  • stretch:默認(rèn)值,默認(rèn)拉伸子元素的高度
  • flex-start:讓彈性項目對齊到垂直軸起點
  • flex-end :讓彈性項目對齊到垂直軸終點
  • center:讓彈性項目沿垂直軸居中對齊
  • baseline:讓彈性項目對齊到彈性項目的基線

6. align-content

[圖片上傳失敗...(image-6f77f6-1668844991417)]
定義

設(shè)置彈性項目沿垂直軸的分布方式/對齊方式。
語法

.container{
  align-content: normal | flex-start | flex-end | center | stretch | space-between | space-around |space-evenly;
}
  • normal
  • flex-start: 彈性項目從垂直軸起點向終點排列。
  • flex-end:彈性項目從垂直軸終點向垂直軸起點排列。(順序不變)
  • center :彈性項目沿垂直軸居中排列。
  • stretch :彈性項目拉伸高度以適應(yīng)彈性容器。
  • space-between : 彈性項目從垂直軸起點到終點均勻分布。
  • space-around: 把空白平均分配到彈性項目兩側(cè)。
  • space-evenly:把空白平均分配到彈性項目之間。(任意兩個彈性項目之間的空白是相等的)

注意:該屬性只對多行彈性容器生效,即flex-wrap 設(shè)置為 wrap 或 wrap-reverse。單行彈性容器無效,即 flex-wrap 設(shè)置為no-wrap。

7. gap屬性

[圖片上傳失敗...(image-c491c9-1668844991417)]
定義
gap屬性用控制彈性項目之間的空白大小。注意:該屬性僅控制非邊緣彈性項目。(不控制第一個和最后一個彈性項目)
語法

.container{
  gap:  10px;/*單行:控制水平間距*/
  gap:  10px;/*單行:控制水平和垂直間距*/
  gap: 10px 20px; /* 水平間距 垂直間距*/
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 彈性盒模型是什么? 1.(是什么?)彈性模型是C3的一個布局模型,它包括主元素和父元素兩套屬性。彈性模型是目前移動...
    憂油魚閱讀 406評論 0 0
  • 導(dǎo)讀 Flexbox背景起源 基礎(chǔ)概念(重點) 彈性容器屬性(重點) 彈性項目屬性(重點) Flexbox背景起源...
    爛好人_5b0f閱讀 434評論 0 0
  • 導(dǎo)讀 Flexbox的來歷 基礎(chǔ)概念(重點) 彈性容器屬性(重點) 彈性項目屬性(重點) 應(yīng)用場景 Flexbox...
    不好奇課堂閱讀 3,666評論 0 1
  • 導(dǎo)讀 Flexbox背景 基礎(chǔ)概念(重點) 彈性容器屬性(重點) 彈性項目屬性(重點) Flexbox 2017年...
    天天涯閱讀 174評論 0 0
  • 導(dǎo)讀 Flexbox背景 / 起源 基礎(chǔ)概念 (重點) 彈性容器 (重點) 彈性項目 (重點) Flexbox ...
    敗于化纖閱讀 413評論 0 1

友情鏈接更多精彩內(nèi)容