此篇會簡單介紹格線系統原理以及使用技巧。
Bootstrap5 格線系統是基於 flex
,想活用格線系統可以先多加了解 flexbox 盒模型
,剛好上一集有稍微講解。
在介紹格線系統之前,想先來分享 魔術數字(magic number)
是什麼?
白話文:寫死大小(寬高)樣式。
STAR Method:
情境:假設今天拿到設計稿後。
任務:某個元素開出以下規格。
行動:工程師就直接寫死寬高。
width:300px; width:680px;
結果:當寫死樣式過多後,就容易造成以下問題。
當維護到這種 code...
使用格線系統就可以大幅降低 magic number 的問題。
格線系統的出現,解決了傳統無法解決的問題(例如上方的
magic number
)
容器與內容的概念:格線表示為容器,而網頁所呈現的資訊就稱為內容。
早期電腦螢幕解析度多數是 1024x768
,960 則是多數值的最小公倍數,所以將 960px
為最大寬度,960 Grid System 就誕生了。
去除左右兩邊各
10px
的空間,留下中間940px
的區塊以20px
作為間隔,並加入了容器與內容的概念。
column(欄):類似於 Excel 欄位的概念,從左至右。
十二欄
)gutter(間距):column
彼此之間的距離。
padding
或 margin
來推,960 Grid System 是使用 margin
。padding
,預設寬度為 1.5rem (24px)
。
.gx-*
:控制水平 gutter
的寬度。.gy-*
:控制垂直 gutter
的寬度。.g-*
:控制水平、垂直 gutter
的寬度。g-0
:取消預設水平 gutter
的寬度,這將會移除 .row
的負值 margin
以及所有直屬子列的水平 padding
。格線系統中的排版三劍客:
.container
、.row
、.col 1~12
是一個容器,可以把內容物居中。
有兩種寬度寫法:
.container
:固定寬度.container-fluid
:滿版重要觀念:
.container
。.container
下第一層不一定要是 .row
。列,用來包住 column。
設置不要間距語法:
no-gutters
:讓欄位彼此連在一起。重要觀念:
.row
內層只能是 .col
。將內容放置在 col 中。
col
數值計算:每一列需要的欄數 / 12。
row
裡設置三個 .col-4
即可。重要觀念:
.col
上一層只能是 .row
。
margin
、padding
),容易造成跑版,有需要則在 row
使用 gutters
即可,但可以加上下的 margin
與 padding
。col
後面不接數字,則會照內容去做寬度分配自適應。
<div class="col">1</div>
使用順序:
container > 其他元素,可有可無(ex:h2) > row > col > 內容
步驟 1、要寫在 container
容器裡面。(因此最外層一定要有一個 container
)
.container
固定寬度.container-fluid
滿版步驟 2、.row
(row
裡面第一層只能是 col
)
步驟 3、在 row
裡 .col
總數加起來 12。(col
外層第一層只能是 row
)
步驟 4:網頁內容與元件請放在 .col-*
裡面。
col-6
,因為格線系統使用 flex
,達到自適應的效果。(col
加起來 > 12 就會跳到下一列)col-8
、col-6
,那 col-6
還是會跳到下一行因為加起來超過 12。container
,container
內第一層不一定要是 row
。row
裡層只能放 col
。col
外層只能放 row
。col
。flex-wrap:wrap;
代表 col
超過 100% 會往下掉(超過 12 時)。常見錯誤:千萬千萬不要使用以下方法
col
更改寬度 width
→ 會導致跑版(更改上下可以)。margin
、padding
→ 會導致跑版。
上下
的 margin
與 padding
(border
是往內推的所以不會影響,因為 border-box
特性)。col
因為選單是不規則的(內容、數量)→ 會改用 navbar 導覽列。