2023年,w3c提出了一種新的方案--flex布局,可以簡便、完整、響應式地實現各種頁面布局。目前已得到所有現在瀏覽器的支援。
flex 是 flexible box 的縮寫,翻譯成中文就是「彈性盒子」,用來為盒裝模型提供最大的靈活性。任何乙個容器都可以指定為 flex 布局。當然,行內元素 也可以使用 flex 布局。.box
相容性寫法.box
採用flex布局的元素,被稱為flex容器(flex container),簡稱「容器」。其所有子元素自動成為容器成員,成為flex專案(flex item),簡稱「專案」。.box
結構示意圖
容器預設存在兩根主軸:水平方向主軸(main axis)和垂直方向交叉軸(cross axis),預設專案按主軸排列。
main start/main end:主軸開始位置/結束位置;
cross start/cross end:交叉軸開始位置/結束位置;
main size/cross size:單個專案佔據主軸/交叉軸的空間;
設定在容器上的屬性有6種。flex-direction屬性:決定主軸的方向(即專案的排列方向)主軸的4個方向.box
flex-wrap屬性:定義換**況
預設情況下,專案都排列在一條軸線上,但有可能一條軸線排不下。一條軸線排不下
flex-flow屬性:flex-direction和flex-wrap的簡寫,預設row nowrap.box
justify-content屬性:定義專案在主軸上的對齊方式。.box
對齊方式與軸的方向有關,本文中假設主軸從左到右。align-items屬性:定義在交叉軸上的對齊方式.box
對齊方式與交叉軸的方向有關,假設交叉軸從下到上。align-content屬性:定義多根軸線的對齊方式< 如果專案只有一根軸線,該屬性不起作用。.box
< 所以,容器必須設定flex-wrap:···;
.box
設定在專案上的屬性也有6個。order屬性:定義專案的排列順序。數值越小,排列越靠前,預設為0,可以是負值。展示效果不明顯,直接盜圖
flex-grow屬性:定義專案的放大比例
預設值為0,即如果空間有剩餘,也不放大。可以是小數,按比例佔據剩餘空間。
預設情況
若所有專案的flex-grow的數值都相同,則等分剩餘空間.item
等分剩餘空間
若果有乙個專案flex-grow為2,其餘都為1,則該專案佔據剩餘空間是其餘的2倍
不等分佔據
flex-shrink屬性:定義專案的縮小比例
預設值都為1,即如果空間不足將等比例縮小。如果有乙個專案的值為0,其他專案為1,當空間不足時,該專案不縮小。
負值對該屬性無效,容器不應該設定flex-wrap。
如果乙個專案設定flex-shrink為0;而其他專案都為1,則空間不足時,該專案不縮小。.item
設定flex-shrink為0的專案不縮小
如果所有專案都為0,則當空間不足時,專案撐破容器而溢位。
如果設定專案的flex-shrink不為0的非負數效果同設定為1。
flex-basis屬性:定義在分配多餘空間之前,專案佔據的主軸空間。
預設值為auto,瀏覽器根據此屬性檢查主軸是否有多餘空間。
注意設定的flex-basis是分配多餘空間之前專案佔據的主軸空間,如果空間不足則預設情況下該專案也會縮小。.item
設定flex-basis為350px,但空間充足
空間不足,專案縮小,小於設定值
flex屬性是flex-grow,flex-shrink和flex-basis的簡寫
預設值為0 1 auto,第乙個屬性必須,後兩個屬性可選。可以用 flex:auto; 代替 flex: 1 1 auto;;.item
可以用 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。那麼有沒有一款軟體或者工具可以實現兩個框架...