前言
回想起以前在做網頁設計的時候,排版一直是最頭痛的前置作業。
要排出好看、順暢的版型之外,還要能符合手機版瀏覽,不能跑版。
想想真的是很麻煩。
幸虧現在有很多 CSS的FrameWork可以讓我們使用:
BootStrap、Semantic UI、Metro UI、jQuery UI 等
這些都是我們耳熟能詳,並且常用的。
那,有沒有可能是我不需要使用 CSS的FrameWork,依然可以幫助我快速排好版型,且又不會亂掉的?
那就是——FlexBox。
FlexBox是最近這一年多以來相當盛行的一個排版神器。
我們可以透過幾行簡單的語法,就可以將我們想要呈現的內容,存放在我們想要的區塊內。
而其支援程度,也因為現在大部分的瀏覽器均已支援,所以掀起了一股熱潮。
我們可以在 Caniuse 網站看到目前各大瀏覽器所支援的程度:
其支援程度高達 98%,這也就是為什麼大家非常喜歡 FlexBox的原因。
除了簡單、好用以外,最重要的是:支援程度相當高,讓我們不必再為了某瀏覽器而傷透腦筋。
那麼現在就來看一下FlexBox到底是什麼東西吧!
FlexBox 佈局模式示意圖
在使用FlexBox之前,我們需要先知道他的佈局模式,才能讓我們有效的運用。
根據 W3C 的文章介紹,FlexBox的模型可以用下圖來解釋。
在圖中,我們發現有許多條線相交,那麼每一條線各代表什麼意思?
就讓讀者來帶你看看。
首先我們會發現圖中最外面用了一層 Flex Container所包覆著,這代表要使用FlexBox之前,我們需要給定一個區塊,讓這個區塊內的元件具有 Flex的效果。
而Flex Container這個容器當中,一共放了兩個 Flex Item,也就是兩個區塊內容的顯示。
其中我們發現到,這張圖主要倍 Main以及Cross所劃分。
你可以想成:Main就是水平,而Cross就是垂直。
至於Start、End應該就不用多說了,就是開始以及結束。
所以你可以把FlexBox解釋成:在一個容器當中,我們將每一個區塊都視為一個 Item
其中每一個Item的擺放位置,我們可以透過 Main、Cross這兩條線來去劃分。最終將我們的區塊放入我們想要的位置當中。
接下來我們來看,FlexBox到底有哪些屬性可以用吧!
我們可以在 W3CSchool 當中查到下表:
這些屬性看似很多,但其實實際了解之後你會發現:其實真的還好,而且很好用。
那看完了屬性之後,我們來自己撰寫練習看看吧!
首先我們可以先準備一段Html的Code:
1 | <!-- 這是一段很簡單的Code,主要就是將五個items放入FlexBox區塊當中 --> |
這時候我們只需要將最外圍的Container賦予它FlexBox的效果:
1 | /* 宣告為 flex box */ |
這時候會呈現這樣的效果:
這時候我們的Container已經是FlexBox了。這時候我們先來介紹幾個常用到的屬性:
flex-wrap
flex-wrap可以讓我們決定當頁面寬度過窄,以致於內容無法完整呈現的時候,是否要進行換行。
預設是 nowrap,也就是不換行。
接下來我們在container中,加入flex-wrap
1 | .wrap { |
這時候我們就會發現:當內容物不夠空間呈現的時候,就會自動換到下一行。就不會像以前一樣直接被遮住無法顯示。
接著我們來看第二個屬性:
Justify Content
Justify Content
是決定我們每一個 Items的水平對齊方式,一共有五種水平對齊方式,我們可以透過以下的Code來展示一下:
首先ㄧ樣先給一個html,這裡我們用三個items來看呈現效果。
1 | <section> |
接著我們加上Justify Content 的屬性給Container
1 | /* Justify Content */ |
我們可以看看呈現的效果:
看完水平之後,接下來我們來看垂直:
align-items
align-items
是決定我們每一個 Items的垂直對齊方式,一共有五種垂直對齊方式。其中比較特別的是,還可以針對內容長短來自動增加Div高度。
我們可以透過以下的Code來展示一下:
首先一樣先準備我們的CSS:
1 | .ai--start { |
接著為了能夠顯示出效果,我們需要再針對每一個Div Item給予不一樣大小的內容:
1 | <section> |
接下來我們來看一下呈現的效果:
從結果圖來看,我們很清楚可以知道 Start、End、以及Center的效果。
但其中比較特別的是Stretch這個屬性。
這個屬性會自動去判斷我們每一個Items長度,並且給予每一個Items最大的高度位置,來讓我們的Items都維持相同的高度。
由於FlexBox屬性不少,因此筆者這裡僅列出常用到的屬性來做範例。
若想深入了解可以點選上方表格的連結,裡面有詳盡的解釋。
如果看完還是不懂的話,筆者建議可以透過小遊戲來學習FlexBox。
在國外,有大神們做出FlexBox的青蛙小遊戲,共有24關。
每一關介紹一種屬性,我們需要設法利用屬性,幫助青蛙回到屬於自己的荷葉上。
是一款滿有趣又能學習FlexBox的小遊戲。
有興趣的讀者們可以點選下方連結來開始遊玩:
最後,希望大家都能快速上手這個超好用的FlexBox排版神器。
有任何家教、案子 或技術相關問題 請都歡迎聯繫我