Flex布局笔记

130 阅读2分钟
tags: web frontend

需要排列的元素外層要有一個父元素來包覆所有內容

display: flex;

justify-content

這個屬性可以水平對齊元素位置
參數:

  • flex-start: 元素和容器的左端對齊(main start)。
  • flex-end: 元素和容器的右端對齊(main end)。
  • center: 元素在容器置中。
  • space-between: 元素之間保持相等的距離(左右元素將會與main start和main end貼齊)。
  • space-around: 元素周圍保持相等的距離(間距也是平均分配)。

align-items

這個屬性可以垂直對齊元素位置(針對單行)
參數:

  • flex-start: 元素與容器的頂部對齊(cross start)。
  • flex-end: 元素與容器的底部對齊(cross end)。
  • center: 元素垂直置中。
  • baseline: 元素在容器中各自依照本身的文字基準線來對齊。
  • stretch: 元素被拉伸以填滿整個容器(全部撐開至Flexbox的高度)。

flex-direction

這個屬性定義元素在容器中擺放的位置
參數

  • row: 預設值,由左到右,從上到下(元素擺放的方向和文字方向一致)。
  • row-reverse: 元素擺放的方向和文字的方向相反。
  • column: 主軸從水平方向變為垂直方向,換言之,交錯軸變成水平方向,元素擺放由上到下,再從左到右(元素從上放到下)。
  • column-reverse: 元素從下放到上。

order

這個屬性可以直接指定一個數字,就可以由數值小到大的排列順序,也可以設置單個元素的order屬性
用法

order: ...-1,0,1...;

align-self

它作用在所套用的內元件本身,並不影響其他元件的排列方式
參數與align-items相同

flex-wrap

這個屬性負責的是讓內容的元素換行
參數

  • nowrap: 所有的元素都在一行。
  • wrap: 元素自動換成多行。
  • wrap-reverse: 元素自動換成逆序的多行

flex-flow

它為 flex-direction 和 flex-wrap 的縮寫
用法

flex-flow: row wrap;

align-content

這個屬性可以垂直對齊元素位置(多行的所有元素)
參數

  • flex-start:對齊最上面的 cross start
  • flex-end:對齊最下面的 cross end
  • center:垂直置中
  • space-between:將第一行與最後一行分別對齊最上方與最下方
  • space-around:每行平均分配間距
  • stretch:內容元素全部撐開

小坑

若是用過 flex-direction 之後,再使用 justify-content、align-items\content\self 須注意方向是否改變。
像是主軸變成垂直時,若要改動元素的水平擺放位置,應該設定 align-*,而非設定 justify-content

資源&參考

小青蛙遊戲網址
flexboxfroggy.com/#zh-tw

深入解析 CSS Flexbox
www.oxxostudio.tw/articles/20…

更詳細的 Flex 用法
hackmd.io/MYMw7AHAbMY…