flex 出來之初,很多瀏覽器都不相容,但現在已經很流行了,掌握其基本的用法很有必要
1.寫法:display:flex,當我們往乙個元素當中新增這個屬性的時候,它自身會變成乙個塊級元素,不管它之前是span還是什麼,都一樣(看下圖),所以我們可以把它想象成變成了乙個內部可以彈性變化的塊級容器。
2.水平的主軸(main axis)和垂直的交叉軸(cross axis)
這個概念相當的重要,後面一系列的設定屬性的變化,都和它有關係,簡單的來說,當時設定了display:flex後,這個元素內部相當於有了水平線和垂直線(預設是按照水平的主軸來排列),
看下圖(這裡的軸是可以設定多根的)。
3.flex布局在父元素當中的屬性
1.flex-direction 決定主軸的方向(即專案的排列方向)
用法flex-direction:flex-direction: row | row-reverse | column | column-reverse,第乙個值代表的是水平方向,第二個值代表的是水平反方向,第三個值代表的是垂直方向,第四個值代表的垂直反方向,什麼意思呢,從下圖中我們很容易就理解了。
2.justify-content 定義了專案在主軸上的對齊方式。
用法:justify-content: flex-start | flex-end | center | space-between | space-around,這個屬性其實就是規定了容器內元素的排列方式。flex-start代表從主軸最開始位置開始排列,flex-end代表的是從主軸最末尾的位置排列,center代表在主軸上居中排列,space-between代表的是兩端對齊,專案之間的間隔都相等,space-around代表的是每個專案兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍。
3.align-items 定義專案(這裡的專案都是指的是子元素)在交叉軸上如何對齊
用法:align-items: flex-start | flex-end | center | baseline | stretch,這個我們引數justify-content來理解,我們舉一反三下,也就很容易。flex-start交叉軸的起點對齊,flex-end交叉軸的終點對齊,center交叉軸的中點對齊,baseline專案的第一行文字的基線對齊,stretch如果專案未設定高度或設為auto,將佔滿整個容器的高度。
定義在父元素上面的常用的也就這麼幾個,當然還有寫不常用的,flex-wrap定義如果一條軸線排不下,如何換行;align-content定義了多根軸線的對齊方式。如果專案只有一根軸線,該屬性不起作用。
接下來我們來了解下,定義在子元素上面的屬性
1.order 定義專案的排列順序。數值越小,排列越靠前,預設為0
用法:order: integer,在這裡是可以定義負值的
2.flex-grow 定義專案的放大比例,預設為0,即如果存在剩餘空間,也不放大
用法:flex-grow: number,這裡面的重點是懂得這個如何計算比例,下圖每張圖的初始的寬度都是50,父div的寬度是500。我這裡圖1,圖3,圖4,設定flex-grow: 1;圖2設定flex-grow: 4.
下面的計算為了看的更明白,我這裡就計算就不考慮border了。
先計算剩餘空間500-4*50=300px
剩餘空間被分成7份,圖1,圖3,圖4各佔1/7的剩餘空間,所以它們額寬度就變成了50+300/7,圖2佔4/7,圖2的寬度就變成了50+300/7*4.
3.flex-shrink 定義了專案的縮小比例,預設為1,即如果空間不足,該專案將縮小,當flex-shrink屬性為0,它將不縮小,這裡不支援負值。
用法:flex-shrink: number,同樣的這裡面的重點是懂得這個如何計算比例,我這裡定義3個寬度都為100px的div,圖1,圖3,圖4,定義乙個寬度為200px的div,圖2,並且都設定flex-shrink: number: 1,我這裡將父div的width屬性設定成300px。我這裡同樣不考慮border。
這裡要先計算溢位空間100*3+200-300=200px.
注意flex-shrink是收縮比例, 是基於專案寬度的,我們這裡大致可以寫成乙個方程式1003n+200*2n=200px,算出的結果是n=2/7。
然後用單個元素的px*(1-2/7),就可以得出縮放的大小,也就是圖二是200*(1-2/7)≈ 143px,
而其他幾個元素,圖1,圖3,圖4是100*(1-2/7)≈71.4px
4.flex-basis 定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即專案的本來大小。
用法:flex-basis: length,它可以設為跟width或height屬性一樣的值(比如350px),則專案將佔據固定空間。
5.flex 是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。
用法:flex: 1 1 auto,第乙個表示的是flex-grow,第二個表示的是flex-shrink,第三個是flex-basis。
6.align-self 允許單個專案有與其他專案不一樣的對齊方式,可覆蓋align-items屬性。預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。
用法:align-self: auto | flex-start | flex-end | center | baseline | stretch,該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。
CVS使用手冊
注意 第一次匯出以後,就不是通過cvs checkout來同步檔案了,而是要進入剛才cvs checkout project name匯出的project name目錄下進行具體檔案的版本同步 新增,修改,刪除 操作。cvs的許可權管理分2種策略 基於系統檔案許可權的系統使用者管理 適合多個在lin...
sed使用手冊
原貼 http blog.chinaunix.net u 23204 showart 305602.html sed使用手冊 原創 在sed語句,正規表示式必須封閉在 中間。如 d,刪除空行。sed位址 在sed位址管理中,預設是對全域性進行操作,同時位址可以分為行位址和模式位址。如1,10d 12...
vi 使用手冊
進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔案,並將游標置於第n行首 vi filename 開啟檔案,並將游標置於最後一行首 vi pattern filename 開啟檔案,並將游標置於第乙個與pattern匹配的串處 vi r...