「當你迷惘的時候,就回到原點想一想」-中華一番 蘭飛鴻
網頁前端新手村系列文章,宗旨並不在技術本身的教導,重點放在技術與技術之間的脈胳關係。讓零碎的網頁前端技術的關鍵字,成為比較有系統性的視野。
讓一開始接觸網頁前端的新手們,有一個比較友善的系統來架構你的學習,至於技術本身的深入探討,就留給其它的高手們吧。
跟著我的步調,先來看看 flex 對於內容排版,有什麼基本的功能吧!
以《眾妙之門》這本簡中翻譯書的內容對照出版日,來看看 flex 為什麼是現在這個名字[1]。
年份 | display | 屬性名稱 |
---|---|---|
2009年以前 | display:box; |
box-{*} |
2011年的左右 | display:flexbox; |
flex() |
2012-2013年 | display:flex |
flex-{*} |
在繁中的一些早期就有出的書(ex: 《HTML5 完美風暴》),也可以看得出這些語法的版本改變,講的都是同一件事,就是 flex box
在現在(2017年底)講的版本,相對穩定許多。(硬要酸一下)
在 CSS2.1 中,定義了四種排版方式。
在此介紹第五種排版方式
flex
或 inline-flex
的容器,內容以 flex formatting context 方式排列。在容器使用
display: flex;
display: inline-flex;
容器裡的元素排列會以 flex
的排列方式進行。
inline
可以橫向並且一行一行的排列,也像 block
這樣控制每個元素::first-letter
、 ::first-line
、float
以及 clear
和 vertical-align
沒有作用。margin
不會 margins collapsingmargin
和 padding
不要用在元素上,目前未定案margin: auto
特別規定在 8.1. Aligning with auto margins - w3.org
理解方式,就像是理解 inline
排版的方式。
一邊看語法,一邊用 inline
的圖複習一下
justify-content
文章的行頭尾對齊align-content
行與行副軸空間分配(副軸頭尾對齊)align-items
整排元素(整行)的對齊(上下調整)align-self
個別元素的對齊(上下調整)flex-flow
縮寫語法
flex-flow: <flex-direction> <flex-wrap>
flex-flow: <flex-wrap>
flex-flow: <flex-direction>
flex-direction
設定在容器
調整文字排列方向,預設 row
col
上→下排
col-reverse
下→上row
左→右排
row-reverse
右→左flex-wrap
設定在容器
自動換行,預設 nowrap
nowrap
可以選擇不換行wrap
滿了換到下一行wrap-reverse
滿了換到上一行order
設定在元素
改變元素順序,預設 0
[1]: Flexbox的奇怪歷史
[2]: Align or justify text - InDesign User Guide
[3]: 5.4. Display Order: the order property - w3.org