前端布局神器display flex

2022-07-11 19:42:14 字數 3742 閱讀 2425

2023年,w3c提出了一種新的方案--flex布局,可以簡便、完整、響應式地實現各種頁面布局。

目前已得到所有現在瀏覽器的支援。

flex 是 flexible box 的縮寫,翻譯成中文就是「彈性盒子」,用來為盒裝模型提供最大的靈活性。任何乙個容器都可以指定為 flex 布局。

.box
當然,行內元素 也可以使用 flex 布局。

.box
相容性寫法

.box
採用flex布局的元素,被稱為flex容器(flex container),簡稱「容器」。其所有子元素自動成為容器成員,成為flex專案(flex item),簡稱「專案」

結構示意圖

容器預設存在兩根主軸:水平方向主軸(main axis)垂直方向交叉軸(cross axis),預設專案按主軸排列。

main start/main end:主軸開始位置/結束位置;

cross start/cross end:交叉軸開始位置/結束位置;

main size/cross size:單個專案佔據主軸/交叉軸的空間;

設定在容器上的屬性有6種。

flex-direction屬性:決定主軸的方向(即專案的排列方向)

.box
主軸的4個方向

flex-wrap屬性:定義換**況

預設情況下,專案都排列在一條軸線上,但有可能一條軸線排不下。

一條軸線排不下

.box
flex-flow屬性:flex-direction和flex-wrap的簡寫,預設row nowrap

.box
justify-content屬性:定義專案在主軸上的對齊方式。

對齊方式與軸的方向有關,本文中假設主軸從左到右。

.box
align-items屬性:定義在交叉軸上的對齊方式

對齊方式與交叉軸的方向有關,假設交叉軸從下到上。

.box
align-content屬性:定義多根軸線的對齊方式< 如果專案只有一根軸線,該屬性不起作用。

< 所以,容器必須設定flex-wrap:···;

.box
設定在專案上的屬性也有6個。

order屬性:定義專案的排列順序。

數值越小,排列越靠前,預設為0,可以是負值。

展示效果不明顯,直接盜圖

flex-grow屬性:定義專案的放大比例

預設值為0,即如果空間有剩餘,也不放大。

可以是小數,按比例佔據剩餘空間。

預設情況

.item
若所有專案的flex-grow的數值都相同,則等分剩餘空間

等分剩餘空間

若果有乙個專案flex-grow為2,其餘都為1,則該專案佔據剩餘空間是其餘的2倍

不等分佔據

flex-shrink屬性:定義專案的縮小比例

預設值都為1,即如果空間不足將等比例縮小。

如果有乙個專案的值為0,其他專案為1,當空間不足時,該專案不縮小。

負值對該屬性無效,容器不應該設定flex-wrap。

.item
如果乙個專案設定flex-shrink為0;而其他專案都為1,則空間不足時,該專案不縮小。

設定flex-shrink為0的專案不縮小

如果所有專案都為0,則當空間不足時,專案撐破容器而溢位。

如果設定專案的flex-shrink不為0的非負數效果同設定為1。

flex-basis屬性:定義在分配多餘空間之前,專案佔據的主軸空間。

預設值為auto,瀏覽器根據此屬性檢查主軸是否有多餘空間。

.item
注意設定的flex-basis是分配多餘空間之前專案佔據的主軸空間,如果空間不足則預設情況下該專案也會縮小。

設定flex-basis為350px,但空間充足

空間不足,專案縮小,小於設定值

flex屬性是flex-grow,flex-shrink和flex-basis的簡寫

預設值為0 1 auto,第乙個屬性必須,後兩個屬性可選。

.item
可以用 flex:auto; 代替 flex: 1 1 auto;;

可以用 flex: none;代替 flex: 0 0 auto;

align-self屬性:允許單個專案與其他專案有不一樣的對齊方式

預設值為auto,表示繼承父元素的align-items屬性,並可以覆蓋align-items屬性。

.item

布局神器 Flexbox

最近的工作內容大多是移動端網頁的開發,百分比布局,media queries,bootstrap等常規的響應式 自適應的開發技術皆一一試過,但覺以上都不夠靈活,所以,一直再嘗試尋求更加靈活的精確的移動端網頁設計技術。尋求的過程中知道了兩個讓我眼前一亮的解決方案 乙個是flexbox 另外乙個是rem...

Flexbox 快速布局神器

flex是flexible box的縮寫,意為 彈性布局 用來為盒狀模型提供最大的靈活性。任何乙個容器都可以指定為flex布局。flexbox通常能讓我們更好的操作它的子元素布局 注意 設為flex布局以後,子元素的float clear和vertical align屬性將失效。採用flex布局的元...

前端轉換神器react to vue

近年來,前端技術不斷火熱,尤其以react和vue技術最為火爆,這兩個前端框架也是目前國內使用得最多的兩個框架。雖然,在使用的廣度上react虐勝一籌,但vue框架的發展趨勢也不容小覷,特別是去年react的mit風波,越來越大的企業開始將目光轉向了vue。那麼有沒有一款軟體或者工具可以實現兩個框架...