Flex布局新舊混合寫法詳解

2022-07-12 05:18:07 字數 2870 閱讀 3832

首先還是從兩個版本的語法開始講吧,這裡還是假設flex容器為.box,子元素為.item

.box

1.box-pack 屬性

box-pack定義子元素主軸對齊方式。

.box

box-pack屬性總共有4個值:

.box

2.box-align 屬性

box-align定義子元素交叉軸對齊方式。

.box

box-align屬性總共有5個值:

.box

3.box-direction 屬性

box-direction定義子元素的顯示方向。

.box

box-direction屬性總共有3個值:

.box

4.box-orient 屬性

box-orient定義子元素是否應水平或垂直排列。

.box

box-orient屬性總共有5個值:

.box

5.box-lines 屬性

box-lines定義當子元素超出了容器是否允許子元素換行。

.box

box-lines屬性總共有2個值:

.box

1.box-flex 屬性

box-flex定義是否允許當前子元素伸縮。

.item

box-flex屬性使用乙個浮點值:

.item

2.box-ordinal-group 屬性

box-ordinal-group定義子元素的顯示次序,數值越小越排前。

.item

box-direction屬性使用乙個整數值:

.item

.box

/*行內flex*/

.box

.box

.item

首先是定義容器的display屬性:

.box

由於舊版語法並沒有列入w3c標準,所以這裡不用寫display:box,下面的語法也是一樣的。

這裡還要注意的是,如果子元素是行內元素,在很多情況下都要使用display:blockdisplay:inline-block把行內子元素變成塊元素(例如使用box-flex屬性),這也是舊版語法和新版語法的區別之一。

.box

這裡舊版語法有4個引數,而新版語法有5個引數,相容寫法新版語法的space-around是不可用的:

.box

.box

這裡的引數除了寫法不同,其實是功能是一樣的:

.box

子元素的顯示方向可通過box-direction + box-orient + flex-direction實現,下面請看例項:

左到右

.box

右到左

.box

這裡補充說明一點: box 寫法的box-direction只是改變了子元素的排序,並沒有改變對齊方式,需要新增乙個box-pack來改變對齊方式。

上到下

.box

下到上

.box

.item

.item

上面是允許放大,box語法中box-flex如果不是0就表示該子元素允許伸縮,而flex是分開的,上面flex-grow是允許放大(預設不允許),下面的flex-shrink是允許縮小(預設允許)。box-flex預設值為0,也就是說,在預設的情況下,在兩個瀏覽器中的表現是不一樣的:

這裡還有一點,就是新舊語法的演算法是不一樣的,假設box-flex的值不等於0,舊語法中,如果有多餘的空間,box-flex的值越大,說明空白部分的佔比越多,反之亦然:

而新版的語法中,放大的比例是直接按flex-grow的值來分配的,flex-grow的縮放會覆蓋flex-shrink:0,看例子:

引數:

.item

.item

相容新舊瀏覽器的flex寫法

定義 flex def 主軸居中 flex zcenter 主軸兩端對齊 flex zbetween 主軸end對齊 flex zend 主軸start對齊 flex zstart 側軸居中 flex ccenter 側軸start對齊 flex cstart 側軸底部對齊 flex cend 側軸...

自用 flex布局相容寫法

當我在調垂直居中怎麼都居中不了的時候,我就會想用 flex 布局。當我全部都用了 flex 布局而沒有帶上相容字首,在一些裝置上,樣式簡直不忍直視 記錄一下 flex 的相容寫法,方便以後查閱。就寫幾個常用的,其他的應該就在前面加字首即可。display webkit box display moz...

flex布局詳解

2009年,w3c 提出了一種新的方案 flex 布局,可以簡便 完整 響應式地實現各種頁面布局。目前,它已經得到了所有瀏覽器的支援,這意味著,現在就能很安全地使用這項功能。flex 是 flexible box 的縮寫,意為 彈性布局 用來為盒狀模型提供最大的靈活性。任何乙個容器都可以指定為 fl...