前端面試3:flex彈性盒佈局

這裏有一份簡潔的前端知識體系等待你查收,看看吧,會有驚喜哦~若是以爲不錯,懇求star哈~前端


課程思惟導圖

flex.png

Flex 彈性盒佈局

CSS3彈性盒佈局的理解:git

web應用有不一樣設備尺寸和分辨率,這時須要響應式界面設計來知足複雜的佈局需求,Flex彈性盒模型的優點在於開發人員只是聲明佈局應該具備的行爲,而不須要給出具體的實現方式,瀏覽器負責完成實際佈局。github

當佈局涉及到不定寬度,分佈對齊的場景時,就要優先考慮彈性盒佈局。web

容器的屬性

主軸的方向瀏覽器

flex-direction: row | row-reverse | column | column-reverse;
row(默認值):主軸爲水平方向,起點在左端。
row-reverse:主軸爲水平方向,起點在右端。
column:主軸爲垂直方向,起點在上沿。
column-reverse:主軸爲垂直方向,起點在下沿。
複製代碼

換行屬性佈局

flex-wrap: nowrap | wrap | wrap-reverse;
nowrap(默認):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。
複製代碼

簡寫:方向 + 換行flex

flex-flow: <flex-direction> || <flex-wrap>;
複製代碼

主軸對齊方式flexbox

justify-content: flex-start | flex-end | center | space-between | space-around;
flex-start(默認值):左對齊
flex-end:右對齊
center: 居中
space-between:兩端對齊,項目之間的間隔都相等。
space-around:每一個項目兩側的間隔相等。因此,項目之間的間隔比項目與邊框的間隔大一倍。
複製代碼

交叉軸對齊方式spa

align-items: flex-start | flex-end | center | baseline | stretch;
flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊。
center:交叉軸的中點對齊。
baseline: 項目的第一行文字的基線對齊。
stretch(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。
複製代碼

多根軸線對齊方式設計

align-content: flex-start | flex-end | center | space-between | space-around | stretch;
flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
space-around:每根軸線兩側的間隔都相等。因此,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(默認值):軸線佔滿整個交叉軸。
複製代碼

項目的屬性

排列順序,數值越小,排列越靠前,默認爲0。

order: <integer>;
複製代碼

項目的放大比例,默認爲0,即若是存在剩餘空間,也不放大。

flex-grow: <number>; /* default 0 */
複製代碼

項目的縮小比例,默認爲1,即若是空間不足,該項目將縮小。

flex-shrink: <number>; /* default 1 */
複製代碼

項目佔據的空間,默認值爲auto,即項目的原本大小

flex-basis: <length> | auto; /* default auto */
複製代碼

簡寫:flex-grow, flex-shrink 和 flex-basis

flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
複製代碼

獨立的對齊方式

align-self: auto | flex-start | flex-end | center | baseline | stretch;
複製代碼

關於項目屬性flex的理解:

簡寫形式 完整形式
默認值 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;

注意:重點理解flex:1跟flex:auto的區別,本質上是flex-basis的理解。

flexbox在分配剩餘空間時,須要計算剩餘空間的大小,這依賴於flex-basis。

flex:1時flex-basis是0%,也就是元素就算設置了width也不會起做用,基準寬度爲0,元素的最終寬度是分配了剩餘寬度後獲得的尺寸。

flex:auto時,flex-basis是auto,基準寬度爲元素設置的width,最終寬度等於基準寬度+剩餘寬度分配後的寬度。

相關文章
相關標籤/搜索