flex是什么及flex布局語法教程詳解

Flex布局
Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性,自由的操作容器中元素(項(xiàng)目)的排列方式
任何一個(gè)容器都可以指定為 Flex 布局。
.box{ display: flex; }
行內(nèi)元素也可以使用 Flex 布局。
.box{ display: inline-flex; }
Webkit 內(nèi)核的瀏覽器,必須加上-webkit前綴。
.box{ display: -webkit-flex; /* Safari */ display: flex; }
注意,設(shè)為 Flex 布局以后,子元素的float、clear和vertical-align屬性將失效。
概念
采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 項(xiàng)目(flex item),簡稱"項(xiàng)目"。
容器默認(rèn)存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點(diǎn))叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。
項(xiàng)目默認(rèn)沿主軸排列。單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。
容器的屬性
容器的6個(gè)屬性
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
1、flex-direction屬性
flex-direction屬性決定主軸的方向(即項(xiàng)目的排列方向)。
.box { flex-direction: row | row-reverse | column | column-reverse; }
值可能為4個(gè)
- row(默認(rèn)值):主軸為水平方向,起點(diǎn)在左端。
- row-reverse:主軸為水平方向,起點(diǎn)在右端。
- column:主軸為垂直方向,起點(diǎn)在上沿。
- column-reverse:主軸為垂直方向,起點(diǎn)在下沿。
2、flex-wrap屬性
默認(rèn)情況下,項(xiàng)目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。
.box{ flex-wrap: nowrap | wrap | wrap-reverse; }
它可能取三個(gè)值。
(1)nowrap(默認(rèn)):不換行。
(2)wrap:換行,第一行在上方。
(3)wrap-reverse:換行,第一行在下方。
3、flex-flow屬性
flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,默認(rèn)值為row nowrap。
.box { flex-flow: <flex-direction> || <flex-wrap>; }
4、justify-content屬性
justify-content屬性定義了項(xiàng)目在主軸上的對齊方式。
.box { justify-content: flex-start | flex-end | center | space-between | space-around; }
它可能取5個(gè)值,具體對齊方式與軸的方向有關(guān)。下面假設(shè)主軸為從左到右。
- flex-start(默認(rèn)值):左對齊
- flex-end:右對齊
- center: 居中
- space-between:兩端對齊,項(xiàng)目之間的間隔都相等。
- space-around:每個(gè)項(xiàng)目兩側(cè)的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍。
5、align-items屬性
align-items屬性定義項(xiàng)目在交叉軸上如何對齊
.box { align-items: flex-start | flex-end | center | baseline | stretch; }
它可能取5個(gè)值。具體的對齊方式與交叉軸的方向有關(guān),下面假設(shè)交叉軸從上到下。
- flex-start:交叉軸的起點(diǎn)對齊。 flex-end:交叉軸的終點(diǎn)對齊。 center:交叉軸的中點(diǎn)對齊。 baseline:
- 項(xiàng)目的第一行文字的基線對齊。 stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度。
6、align-content屬性
align-content屬性定義了多根軸線的對齊方式。如果項(xiàng)目只有一根軸線,該屬性不起作用。
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
該屬性可能取6個(gè)值。
- flex-start:與交叉軸的起點(diǎn)對齊。
- flex-end:與交叉軸的終點(diǎn)對齊。
- center:與交叉軸的中點(diǎn)對齊。
- space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。
- space-around:每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
- stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸。
參考文檔 :http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
總結(jié)
到此這篇關(guān)于flex是什么及flex布局語法教程詳解的文章就介紹到這了,更多相關(guān)flex布局語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
使用Flex布局實(shí)現(xiàn)頭部固定內(nèi)容區(qū)域滾動的方法
這篇文章主要介紹了使用Flex布局實(shí)現(xiàn)頭部固定內(nèi)容區(qū)域滾動的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小2020-08-04- 這篇文章主要介紹了詳解flex布局下圖片變形的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)2020-08-04
詳解flex布局與position:absolute/fixed的沖突問題
這篇文章主要介紹了詳解flex布局與position:absolute/fixed的沖突問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面2020-08-03Flex布局實(shí)現(xiàn)div內(nèi)部子元素垂直居中的示例
這篇文章主要介紹了Flex布局實(shí)現(xiàn)div內(nèi)部子元素垂直居中的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編2020-08-03Flex布局讓子項(xiàng)保持自身高度的實(shí)現(xiàn)
這篇文章主要介紹了Flex布局讓子項(xiàng)保持自身高度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)2020-08-03讓CSS flex布局最后一行列表左對齊的N種方法(小結(jié))
這篇文章主要介紹了讓CSS flex布局最后一行列表左對齊的N種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編2020-07-23css3 flex布局實(shí)現(xiàn)平均分配元素的示例代碼
這篇文章主要介紹了css3 flex布局實(shí)現(xiàn)平均分配元素的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編2020-07-21flex布局實(shí)現(xiàn)上下固定中間滑動的布局方式
這篇文章主要介紹了flex布局實(shí)現(xiàn)上下固定中間滑動的布局方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來2020-07-21