flex
佈局是W3C
在2009年提出了一種彈性的自適應佈局方案,能夠簡便、完整、響應式地實現各類頁面佈局。目前,它已經獲得了全部瀏覽器的支持。 css
flex
的核心概念是
軸和
容器。其中容器包裹在外層的是父容器,內層的是子容器。容器默認存在兩根軸:水平的主軸
main axis
和垂直的交叉軸
cross axis
。主軸的開始位置與邊框的交叉點是
main start
,結束位置是
main end
;交叉軸的開始位置是
cross start
,結束位置是
cross end
。子容器默認沿主軸排列。每一個字容器佔據的主軸空間是
main size
,佔據的交叉軸空間是
cross size
。 使用
flex
實現水平垂直居中。
.container {
display: flex;
justify-content: center;
items-align: center;
}
複製代碼
display: flex|inline-flex;
flex-direction: row | row-reverse | column | column-reverse;
flex-wrap: nowrap | wrap | wrap-reverse;
flex-flow: <‘flex-direction’> || <‘flex-wrap’>;
justify-content: flex-start | flex-end | center | space-between | space-around;
align-items: flex-start | flex-end | center | baseline | stretch;
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
複製代碼
設置容器爲flex
佈局模式,其中flex
爲塊級佈局,inline-flex
爲行內佈局。瀏覽器
.container {
display: flex;
}
複製代碼
flex-direction
屬性決定了主軸的方向。默認方向是row
便是left to right
。佈局
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
複製代碼
flex-wrap
屬性決定了當子元素沿軸線排列不下是否換行排列。flex
.container {
flex-wrap: nowrap | wrap | wrap-reverse;
}
複製代碼
flex-flow
是屬性flex-direction
和flex-wrap
的簡寫形式。spa
.container {
flex-flow: <‘flex-direction’> || <‘flex-wrap’>;
}
複製代碼
justify-content
屬性決定了子元素沿主軸的對其方式。3d
.container {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
複製代碼
main start
開始方向左對齊。main end
開始方向右對齊。main axis
中間居中。main axis
兩端對其,項目之間的間隔都相等。main axis
均勻分佈,每一個項目兩側的間隔相等,項目之間的間隔比項目與邊框的間隔大一倍。align-items
屬性決定了子元素沿交叉軸的對其方式。code
.container {
align-items: flex-start | flex-end | center | baseline | stretch;
}
複製代碼
cros start
對齊。cros end
對齊。cros axis
中點對齊。align-content
屬性決定了多根軸線的對齊方式。cdn
.container {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
複製代碼
cros axis
的起點對齊。cros axis
的終點對齊。cros axis
的中點對齊。cros axis
兩端對齊,軸線之間的間隔平均分佈。order: <integer>;
flex-grow: <number>;
flex-shrink: <number>;
flex-basis: <length> | auto;
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ];
align-self: auto | flex-start | flex-end | center | baseline | stretch;
複製代碼
order
是屬性決定了子元素的排列順序,數字越小的在前。blog
.item {
order: <integer>;
}
複製代碼
flex-grow
是屬性決定當有空餘空間時子元素的放大比例。頁面佈局
.item {
flex-grow: <number>;
}
複製代碼
flex-shrink
是屬性決定當空間不足時子元素的縮小比例。
.item {
flex-shrink: <number>;
}
複製代碼
flex-basis
是屬性決定計算剩餘空間以前子元素默認的大小。
.item {
flex-basis: <length> | auto;
}
複製代碼
flex-flow
是屬性flex-grow
、flex-shrink
、flex-basis
的簡寫形式。
.item {
flex-flow: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
複製代碼
0 0 auto
0 1 auto
1 1 auto
flex-self
屬性決定了單個子元素與其餘子元素的對齊方式。
.item {
flex-self: auto | flex-start | flex-end | center | baseline | stretch;
}
複製代碼