flex佈局快速入門

原文鏈接 : https://lz5z.com/FlexLayoutLearning/

什麼是 flex 佈局

傳統佈局的核心是盒子模型,依賴 display 屬性 + position 屬性 + float 屬性。可以看出來傳統佈局非常容易實現像 word 左對齊,右對齊這樣的功能,可以說,傳統佈局更適合於文字排版。

flex 是 flexible Box 的縮寫,可以看做彈性的盒子模型。

flex 用法

使用 flex 首先要設置父元素 display: flex。任何元素都可以指定爲 flex 佈局:

塊狀元素:

.box {
    display: flex;
}

行內元素

.box {
    display: inline-box;
}

設爲 flex 佈局以後,子元素的 float、clear 和 vertical-align 屬性將失效。

flex 兩個基本概念

flex 的核心的概念就是 容器 和 。容器包括外層的 父容器 和內層的 子容器,軸包括 主軸 和 交叉軸,如下圖所示:

https://lz5z.com/assets/img/flex-layout.png

容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置叫做 main start,結束位置叫做 main end;交叉軸同理,子容器默認沿主軸排列。單個子容器佔據的主軸空間叫做 main size,佔據的交叉軸空間叫做 cross size。

容器具有這樣的特點:父容器可以統一設置子容器的排列方式,子容器也可以單獨設置自身的排列方式,如果兩者同時設置,以子容器的設置爲準。

父容器

父容器一共有6個屬性: flex-direction, flex-wrap, flex-flow, justify-content, align-items, align-content

flex-direction 屬性決定主軸的方向

Untitled

flex-wrap 決定子容器是否換行排列

Untitled

flex-flow

flex-direction 屬性和 flex-wrap 屬性的簡寫形式,默認值爲 row nowrap

justify-content 設置子容器在主軸上的對齊方式

Untitled

align-items 設置子容器沿交叉軸的對齊方式

Untitled

子容器

子容器一共有6個屬性: order, flex-grow, flex-shrink, flex-basis, flex, align-self

order 改變子容器的排列順序

默認值爲 0,可以爲負值,數值越小排列越靠前。order 只能爲整數。

Untitled

flex-grow 定義子容器如何瓜分剩餘空間

默認值爲 0,就是即使存在剩餘空間,也不瓜分。如果定義了非 0 值,則按照比例瓜分。flex-grow 只能爲整數。

Untitled

flex-shrink 定義了子容器的縮小比例。

默認爲1,即如果空間不足,則子容器將縮小。如果所有子容器的 flex-shrink 都爲1,當空間不足時,都將等比例縮小。如果某個子容器的 flex-shrink 爲0,其他子容器都爲1,則空間不足時,前者不縮小。

Untitled

flex-basis 用來改變子容器佔據主軸空間的大小

表示在不伸縮的情況下子容器佔據主軸空間的大小,默認爲 auto,表示子容器本來的大小。

flex

flex-grow, flex-shrink 和 flex-basis 的簡寫,默認值爲 0 1 auto

align-self 用來覆蓋父容器的 align-items 屬性

align-self 屬性允許單個子容器有與其他子容器不一樣的對齊方式,默認值爲auto,表示繼承父元素的 align-items 屬性,如果沒有父元素,則等同於 stretch。改屬性的取值與 align-items 相同。

Untitled

參考資料

  1. MDN CSS Flexible Box Layout
  2. Flex 佈局教程:語法篇
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章