前端學習3 flex布局
1.Flex容器
任何一個容器都可以被指定為Flex布局,這樣容器內部的元素就可以使用Flex進行布局。
-
采用Flex布局的元素,稱為Flex容器(flex container),簡稱”容器”。
-
它的所有子元素自動成為容器成員,稱為Flex項目(flex item),簡稱”項目”
2.Flex屬性
1.flex-direction: 設置主軸的方向(默認為水平方向,起點在左端)
2.justify-content: 設置主軸上的子元素排列方式
3.flex-wrap: 設置子元素是否換行
4.align-content: 設置側軸上子元素的排列方式(多行)
5.align-items: 設置側軸上的子元素排列方式(單行)
6.flex-flow: 復合屬性,相當于同時設置了flex-direction和flex-wrap
2.1 flex-direction
設置主軸的方向
row | 從左到右(默認值) |
row-reverse | 從右向左 |
column | 從上到下 |
column-reverse | 從下到上 |
2.2 justify-content
設置主軸上的子元素排列方式
flex-start | 從頭部開始,如果主軸是x軸,則從左到右(默認) |
flex-end | 從尾部開始排列 |
center | 在主軸居中對齊 |
space-around | 每個項目兩側的間隔相等,所以,項目之間的間隔比項目與邊框的間隔大一倍。(不貼邊) |
space-between | 先兩邊貼邊再平分剩余空間 |
2.3 flex-wrap
設置子元素是否換行
nowrap | 不換行(默認值) |
warp | 換行 |
默認情況下,項目都排在一條線上(即flex布局中,默認的子元素是不換行的,如果裝不開,會縮小子元素的寬度,放到父元素里面)
2.4 align-items
設置側軸上的子元素排列方式(單行)
flex-start | 從上到下(假設主軸為水平方向,默認) |
flex-end | 從下到上 |
center | 在側軸居中對齊 |
baseline | 項目的第一行文字的基線對齊 |
stretch | 如果項目未設置高度或設為auto,將占滿整個容器的高度 |
2.5 align-content
設置側軸上的子元素的排列方式(多行)
align-content定義了多根軸線的對齊方式,如果項目只有一根軸線,該屬性不起作用(多行,即flex-wrap: wrap)
flex-start | 側軸的的起點對齊 |
flex-end | 側軸的終點對齊 |
center | 側軸的的中點對齊 |
space-between | 與側軸兩端對齊,軸線之間的間隔平均分布。(貼邊) |
space-around | 每根軸線兩側的間隔都相等。軸線之間的間隔比軸線與邊框的間隔大一倍(不貼邊) |
stretch | 軸線占滿整個交叉軸(默認值) |
3.項目的屬性(子元素)
3.1 order
order屬性定義項目的排列順序。數值越小,排列越靠前,默認為0。
3.2 flex-grow
flex-grow屬性定義項目的放大比例,默認為0,即如果存在剩余空間,也不放大。
如果所有項目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都為1,則前者占據的剩余空間將比其他項多一倍。
3.3 flex-shrink
flex-shrink屬性定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小。如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。負值對該屬性無效。
3.4 flex-basis
flex-basis屬性定義了在分配多余空間之前,項目占據的主軸空間(mainsize)。瀏覽器根據這個屬性,計算主軸是否有多余空間。它的默認值為auto,即項目的本來大小。它可以設為跟width或height屬性一樣的值(比如350px),則項目將占據固定空間。
3.5 align-self
align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。
#前端CSS#