flex學習筆記

2021-09-13 18:59:06 字數 3179 閱讀 1398

由於公司專案,一直需要支援ie9;導致作為5年的前端,居然對flex不是熟記於心,不得不二次學習下,(雖然之前學過,寫過demo,但長時間不用,忘了,唉唉唉)

記住flex 布局核心是,彈性,拋棄了 display position float的布局方式;

1. 首先容器明確他的2個軸main axis / cross axis

2. 父容器有6個屬性:(排列方向 換行 主軸/交叉軸/多根軸對齊方式 )

flex-direction flex-wrap flex-flow 

justify-content align-items align-content

3. 子容器的6個屬性:(順序 放大 縮小 主軸空間 綜合 子容器沿交叉軸(覆蓋align-items) )

order flex-grow flex-shrink flex-basis flex align-self

主軸方向:

flex-direction: row/row-reverse/column/column-reverse

換行方式:

flex-wrap:nowrap/wrap/wrap-reverse

主軸與換行:

flex-flow:row nowrap

主軸的對齊方式:

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

order:0; 預設順序

flex-grow:0 /1/2/10/....

當空間多餘時,將多餘的空間,按照放大比例去放大。

例如當3個子元素的該值分別是1 3 無;多出100px,

則分別在各自的寬高上增加100*1/(1+3) 75px 0;

當空間不足時,該值失效,會按照各自原本的寬高比例去縮放

例如當3個子元素的該值分別是1 3 無;各自寬度是50 ,200 50 ,總寬是200;

則最終是200*50/(50+200+50),200*200/(50+200+50),200*50/(50+200+50)

flex-shrink:1/5/..

當空間不足時 不足的空間,由子元素通過收縮因子去減小

例如:當3個子元素的該值分別是1 3 沒設定;各自寬度是50 ,200 50 ,父總寬是200;

則分別是50-100*50*1/(1*50+3*200+1*50);

200-100*200*3/(1*50+3*200+1*50);

50-100*50*1/(1*50+3*200+1*50);;

當空間多餘時,該值失效 無意義。

flex-basis:auto/25%/50px/...

flex-basis 規定的是子元素的基準值。初始長度。所以是否溢位的計算與此屬性息息相關。

應用準則:

content –> width –> flex-basis (limted by max|min-width)

flex-basis與width同在時,以flex-basis為準。

建議使用flex-basis,而非直接給定width

但max-width min-width能限制flex-basis。

即:flex-basis: 250px; max-width: 100px; 最終寬度會是100px;

即:flex-basis: 100px; min-width: 250px; 最終寬度會是100px;

注意:

有flex-basis,有寬高,沒設定flex-shrink。flex-grow,空間不足或多餘時,都以該值為準,不收縮,也不擴張。

空間不足時,有flex-shrink,且有寬度,以flex-basis為基準,去計算不足的空間

flex:0 0 100%

align-self:**,取代align-items;item有自己獨特的在交叉軸上的對齊方式

不容易理解的屬性解釋:

flex-basis :表示在不伸縮的情況下子容器的原始尺寸。主軸為橫向時代表寬度,主軸為縱向時代表高度。

flex-wrap:設定換行方式,決定子容器是否換行,順序換行還是支援逆序換行。

align-content:多行沿交叉軸對齊:當子容器多行排列時,設定行與行之間的對齊方式。

flex 是 flex-grow、flex-shrink、flex-basis的縮寫

flex 的預設值是 0 1 auto。

當 flex 取值為 none,則計算值為 0 0 auto,

當 flex 取值為 auto,則計算值為 1 1 auto,

當 flex 取值為 1,則計算值為 1 1 0%,

當 flex 取值為乙個長度或百分比,則視為 flex-basis 值,flex-grow 取 1,flex-shrink 取 1,有如下等同情況(注意 0% 是乙個百分比而不是乙個非負數字):

當 flex 取值為兩個非負數字,則分別視為 flex-grow 和 flex-shrink 的值,flex-basis 取 0%,

當 flex 取值為乙個非負數字和乙個長度或百分比,則分別視為 flex-grow 和 flex-basis 的值,flex-shrink 取 1,

flex:24px; // 1 1 24px

flex:0%; // 1 1 24px

flex:2 ; // 2 1 0%

flex:2 3; // 2 3 0%

flex:2 20%; // 2 1 20%

用flex 寫乙個聖杯布局

1234

56 ddd

.gg.

..gg.

..gg.

..fgfgfg.

flex學習筆記

2.mxml中類例項 class instance 和屬性 property 的區別 關鍵是看命名空間後面第乙個字母的大小寫。如果第乙個字母是大寫,例如button中的b,就說明這行 引用的是乙個類的例項。如果第乙個字母是小寫,例如label中的l,就說明是在設定乙個類的屬性。3.在mxml中,資料...

flex學習筆記

一 獲取當前時間 var dt date new date 二 date string var temp string dt.fullyear.tostring dt.month 1 tostring dt.date.tostring dt.hours.tostring dt.minutes.tos...

flex學習筆記

參考文章 1 flex none auto 其中 flex grow 分配固定空間 flex shrink 剩餘空間富餘時,該如何分配 flex basis 剩餘空間不足時,該如何分配 先設定個最小值,保證空間不足時還能分配到保底的空間 合法的寫法有 flex auto flex none 1個值,...