前端新手村 flex (上)
「當你迷惘的時候,就回到原點想一想」-中華一番 蘭飛鴻
¶前言
網頁前端新手村系列文章,宗旨並不在技術本身的教導,重點放在技術與技術之間的脈胳關係。讓零碎的網頁前端技術的關鍵字,成為比較有系統性的視野。
讓一開始接觸網頁前端的新手們,有一個比較友善的系統來架構你的學習,至於技術本身的深入探討,就留給其它的高手們吧。
¶flex (上)
¶歷史
跟著我的步調,先來看看 flex 對於內容排版,有什麼基本的功能吧!
以《眾妙之門》這本簡中翻譯書的內容對照出版日,來看看 flex 為什麼是現在這個名字[^1]。
| 年份 | display | 屬性名稱 | 
|---|---|---|
| 2009年以前 | display:box; | box-{*} | 
| 2011年的左右 | display:flexbox; | flex() | 
| 2012-2013年 | display:flex | flex-{*} | 
在繁中的一些早期就有出的書(ex: 《HTML5 完美風暴》),也可以看得出這些語法的版本改變,講的都是同一件事,就是 flex box
在現在(2017年底)講的版本,相對穩定許多。(硬要酸一下)
在 CSS2.1 中,定義了四種排版方式。
- block 排版,為文章排版而設計。
- inline 排版,為文字排版而設計。
- table 排版,為了將資料攤成表格。
- position 排版,為了依位置而不是依內容關係排版而設計
在此介紹第五種排版方式
- flex 排版,為了複雜排版畫面而設計。
¶flex 術語
- flex container 使用 flex或inline-flex的容器,內容以 flex formatting context 方式排列。
- flex items 在 flex container 裡的元素們(整行的元素)
- flex directions 在 flex container 裡的排列方向
¶flex container
在容器使用
| display: flex; | 
容器裡的元素排列會以 flex 的排列方式進行。
- 排列方式會像 inline可以橫向並且一行一行的排列,也像block這樣控制每個元素
- ::first-letter、- ::first-line、- float以及- clear和- vertical-align沒有作用。
- margin不會 margins collapsing
- margin和- padding不要用在元素上,目前未定案
- margin: auto特別規定在 8.1. Aligning with auto margins - w3.org
¶在 flex 容器排元素
理解方式,就像是理解 inline 排版的方式。
一邊看語法,一邊用 inline 的圖複習一下
- justify 指的是每一行的頭尾對齊[1] (主軸方向)
- justify-content文章的行頭尾對齊
 

- align 指的是「以行為單位」的對齊(副軸方向)
- align-content行與行副軸空間分配(副軸頭尾對齊)
- align-items整排元素(整行)的對齊(上下調整)
- align-self個別元素的對齊(上下調整)
 

¶flex-flow
縮寫語法
| flex-flow: <flex-direction> <flex-wrap> | 
¶flex-direction
設定在容器
調整文字排列方向,預設 row
- col上→下排- col-reverse下→上
 
- row左→右排- row-reverse右→左
 
¶flex-wrap
設定在容器
自動換行,預設 nowrap
- nowrap可以選擇不換行
- wrap滿了換到下一行
- wrap-reverse滿了換到上一行
¶order
設定在元素
改變元素順序,預設 0
- 正數靠右排
- 負數靠左排
¶學習管道
¶參考資料
                發表於