課程思維導(dǎo)圖
Flex 彈性盒布局
CSS3彈性盒布局的理解:
web應(yīng)用有不同設(shè)備尺寸和分辨率,這時(shí)需要響應(yīng)式界面設(shè)計(jì)來(lái)滿足復(fù)雜的布局需求,F(xiàn)lex彈性盒模型的優(yōu)勢(shì)在于開(kāi)發(fā)人員只是聲明布局應(yīng)該具有的行為棚壁,而不需要給出具體的實(shí)現(xiàn)方式,瀏覽器負(fù)責(zé)完成實(shí)際布局沽损。
當(dāng)布局涉及到不定寬度,分布對(duì)齊的場(chǎng)景時(shí)循头,就要優(yōu)先考慮彈性盒布局绵估。
容器的屬性
主軸的方向
```
flex-direction: row | row-reverse | column | column-reverse;
row(默認(rèn)值):主軸為水平方向,起點(diǎn)在左端卡骂。
row-reverse:主軸為水平方向国裳,起點(diǎn)在右端。
column:主軸為垂直方向全跨,起點(diǎn)在上沿缝左。
column-reverse:主軸為垂直方向,起點(diǎn)在下沿螟蒸。
```
換行屬性
```
flex-wrap: nowrap | wrap | wrap-reverse;
nowrap(默認(rèn)):不換行盒使。
wrap:換行,第一行在上方七嫌。
wrap-reverse:換行,第一行在下方苞慢。
```
簡(jiǎn)寫(xiě):方向 + 換行
```
flex-flow: <flex-direction> || <flex-wrap>;
```
主軸對(duì)齊方式
```
justify-content: flex-start | flex-end | center | space-between | space-around;
flex-start(默認(rèn)值):左對(duì)齊
flex-end:右對(duì)齊
center: 居中
space-between:兩端對(duì)齊诵原,項(xiàng)目之間的間隔都相等。
space-around:每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等挽放。所以绍赛,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍。
```
交叉軸對(duì)齊方式
```
align-items: flex-start | flex-end | center | baseline | stretch;
flex-start:交叉軸的起點(diǎn)對(duì)齊辑畦。
flex-end:交叉軸的終點(diǎn)對(duì)齊吗蚌。
center:交叉軸的中點(diǎn)對(duì)齊。
baseline: 項(xiàng)目的第一行文字的基線對(duì)齊纯出。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto蚯妇,將占滿整個(gè)容器的高度敷燎。
```
多根軸線對(duì)齊方式
```
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
flex-start:與交叉軸的起點(diǎn)對(duì)齊。
flex-end:與交叉軸的終點(diǎn)對(duì)齊箩言。
center:與交叉軸的中點(diǎn)對(duì)齊硬贯。
space-between:與交叉軸兩端對(duì)齊,軸線之間的間隔平均分布陨收。
space-around:每根軸線兩側(cè)的間隔都相等饭豹。所以,軸線之間的間隔比軸線與邊框的間隔大一倍务漩。
stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸拄衰。
```
項(xiàng)目的屬性
排列順序,數(shù)值越小饵骨,排列越靠前肾砂,默認(rèn)為0。
```
order: <integer>;
```
項(xiàng)目的放大比例,默認(rèn)為0宏悦,即如果存在剩余空間镐确,也不放大。
```
flex-grow: <number>; /* default 0 */
```
項(xiàng)目的縮小比例,默認(rèn)為1饼煞,即如果空間不足源葫,該項(xiàng)目將縮小。
```
flex-shrink: <number>; /* default 1 */
```
項(xiàng)目占據(jù)的空間,默認(rèn)值為auto砖瞧,即項(xiàng)目的本來(lái)大小
```
flex-basis: <length> | auto; /* default auto */
```
簡(jiǎn)寫(xiě):flex-grow, flex-shrink 和 flex-basis
```
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
```
獨(dú)立的對(duì)齊方式
```
align-self: auto | flex-start | flex-end | center | baseline | stretch;
```
關(guān)于項(xiàng)目屬性flex的理解:
簡(jiǎn)寫(xiě)形式 | 完整形式 |
---|---|
默認(rèn)值 | flex : 0 1 auto; |
flex : 1 | flex : 1 1 0%; |
flex: auto | flex : 1 1 auto; |
flex : none | flex: 0 0 auto; |
flex : 0% | flex : 1 1 0%; |
flex : 2 3 | flex : 2 3 0%; |
flex : 2 3px | flex : 2 1 3px; |
注意:重點(diǎn)理解flex:1跟flex:auto的區(qū)別息堂,本質(zhì)上是flex-basis的理解。
flexbox在分配剩余空間時(shí)块促,需要計(jì)算剩余空間的大小荣堰,這依賴于flex-basis。
flex:1時(shí)flex-basis是0%竭翠,也就是元素就算設(shè)置了width也不會(huì)起作用振坚,基準(zhǔn)寬度為0,元素的最終寬度是分配了剩余寬度后得到的尺寸斋扰。
flex:auto時(shí)渡八,flex-basis是auto,基準(zhǔn)寬度為元素設(shè)置的width传货,最終寬度等于基準(zhǔn)寬度+剩余寬度分配后的寬度屎鳍。