iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
自我挑戰組

商科生初探網頁全端開發系列 第 17

Day17-CSS Flex Box其一

  • 分享至 

  • xImage
  •  

FlexBox可稱為彈性盒子,是因應各項行動裝置有不同螢幕尺寸或顯示設備而誕生的設計/佈局模式(Layout mode),以下用stack overflow網站做例子:
https://ithelp.ithome.com.tw/upload/images/20220917/20151031KWrSzKFAEC.png
https://ithelp.ithome.com.tw/upload/images/20220917/20151031WkZnIrrHJm.png
上圖為正常頁面大小,下圖為將視窗水平大小縮到極限後的畫面,可以看到原本水平排列的區塊在縮放後變為垂直排列,換言之利用Flexbox排版後,可以容許在一定範圍內的物件更改其長寬大小以貼合原本的區塊。
參考自


再來,依序介紹FlexBox幾項重要屬性:
A:Display:Flex(設定一個Flexbox及介紹Main Axis及Cross Axis)
B:Flex-direction(row/collum/row-reverse/column-reverse)
C:Justify-content


https://ithelp.ithome.com.tw/upload/images/20220917/201510317gxTJfikTF.png
上圖示範為在1個id=container的<section>中有7個<div>的情形,為方便識別,各自賦予<div>紅橙黃綠藍靛紫顏色做區別,並統一長寬;<section>則有額外設定Border。由圖可以看出7個<div>的height超過了<section>,因此紫色的<div>超出了邊界,如果希望<div>放在<section>中,不要超出其範圍可以怎麼做呢?
https://ithelp.ithome.com.tw/upload/images/20220917/201510315xYYoNjjea.png
A:在id=container的<section>中加入display: flex;後,便將整個<section>設為一個彈性盒子,原本應該超出範圍的<div>像是彈簧一樣以由左至右的方式貼合於<section>上方。

在進入Flex-direction前,要先前置一個重要概念主軸(main axis)、次軸(cross axis)
上圖的<div>被放進flexbox後即以由左至右的方向排列,原因係由左至右為主軸(main axis)文字(內容)預設方向;次軸(cross axis)則指若項目數量/大小超過容器範圍的"換行"方向,通常預設為由上至下。


B-a:https://ithelp.ithome.com.tw/upload/images/20220917/201510316cOxik5av7.png
<section>中輸入flex-direction: row;發現其排列方式並無變化,因為row預設方向亦為由左至右。
B-b:https://ithelp.ithome.com.tw/upload/images/20220917/20151031Xi99w9HcTu.png
<section>中輸入flex-direction: row-reverse;發現其排列方式改為由右至左。
B-c:https://ithelp.ithome.com.tw/upload/images/20220917/20151031F7jO9bZOXm.png
<section>中輸入flex-direction: column;發現其排列方式改為由上而下,此處將<div>縮小較易看出差別。
B-d:https://ithelp.ithome.com.tw/upload/images/20220917/20151031WJltQAcEE8.png
<section>中輸入flex-direction: column-reverse;發現其排列方式改為由下而上。


這邊用簡易表格統整一下flex-direction及main axis/cross axis關係。

flex-direction 主軸(main axis)文字方向 次軸(cross axis)換行方向
row 由左至右 由上到下
row-reverse 由右至左 由上到下
column 由上到下 由左至右
column-reverse 由下到上 由左至右

C-a:https://ithelp.ithome.com.tw/upload/images/20220917/20151031qqnnbsFczr.png
<section>中輸入justify-content: center;可將主軸文字/內容置中排列。
C-b:https://ithelp.ithome.com.tw/upload/images/20220917/20151031Brx0r5mqII.png
<section>中輸入justify-content: space-between;可將主軸首位文字/內容推到最起始側;末位文字/內容推到最後側,其餘內容以均衡間距排列。
C-c:https://ithelp.ithome.com.tw/upload/images/20220917/20151031RfzTnnudVm.png
<section>中輸入justify-content: space-around;可將主軸間文字/內容以均衡間距排列,但其首位與末位與各自邊距不同(僅為內容間距一半)。
C-d:https://ithelp.ithome.com.tw/upload/images/20220917/20151031TPJqETn4EZ.png
<section>中輸入justify-content: space-evenly;與space-around稍有不同的地方在於主軸間文字/內容及首末位邊距均以相等間距排列。


明日接著介紹flexbox其二。


上一篇
Day16-CSS Transform
下一篇
Day18-CSS Flex Box其二
系列文
商科生初探網頁全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言