Bootstrap 4 Grid System
在 Bootstrap 中,設計了相當完善的響應式格線系統,即使沒有要使用其中的模組化框架,也可以單獨使用格線系統,而且只要修改設定檔,就可以輕鬆做出客製化的響應式格線系統
響應式斷點
Bootstrap 是設計成行動 (手機) 優先的框架,並透過 media queries 來設立中斷點
預設斷點
Bootstrap 的預設斷點
| 1 | /* Small devices (landscape phones, 576px and up) */ | 
斷點變數
Bootstrap 預設的斷點變數如下,我們可以透過修改_variable.scss 中的變數來新增或刪除斷點
| 1 | $grid-breakpoints: ( | 
@mixin
我們也可以透過 Bootstrap 寫好的 @mixin 使用最大、最小或特定螢幕尺寸的其中一段
| 1 | /* @media (max-width: 575.98px) */ | 
Grid System
Bootstrap 中的格線系統
基本架構
| 1 | <div class="container"> | 
- 透過最外層的 .container,為每個斷點提供固定的容器寬度 ; 如果想要滿版寬度,在這層可以使用.container-fluid
- 第二層的 .row為橫列,用來包住內層的欄.col,確保每個欄位排列適當
- 所有內容都放在第三層欄 .col的 內層,而不是直接撰寫樣式在.col上,.col也只能是.row的直接子類
格線變數
- 預設的欄位數 - 12與欄間距- 30px,我們可以在- ._variable.scss找到以下相關變數來修改成想要的格式- 1 
 2- $grid-columns: 12 !default; 
 $grid-gutter-width: 30px !default;
- .container在每個斷點都有預設寬度,同樣的我們也可以在- ._variable.scss中找到相關變數來修改成想要的寬度- 1 
 2
 3
 4
 5
 6- $container-max-width: ( 
 sm: 540px,
 md: 720px,
 lg: 960px,
 xl: 1140px
 ) !default;
container 容器
以下為 .container 的預設樣式
| 1 | .container { | 
- margin-right: auto和- margin-left: auto為水平置中
- 因為有 padding,所以.container的實際寬度為max-width減$grid-gutter-width,這個斷點下為1110px
- 如果是 .container-fluid就沒有設定max-width,所以會自適應延伸滿版寬
row 列
以下為 .row 的預設樣式
| 1 | .row { | 
- .row使用- flex來排版,而- flex的預設為水平排列
- 負值的 - margin將- .container的- padding外推,所以- .container的內容寬度在此段點變回 1140px
- 因為 - .row是使用- flex來排版,所以可以直接使用- flexbox來操作內容,Bootstrap 已經有寫好的 class- 1 
 2
 3
 4- <div class="row justify-content-center align-items-end"> 
 <div class="col"></div>
 <div class="col"></div>
 </div>
col 欄
以下為 .col 的預設樣式
| 1 | .col { | 
- 因為有 - padding,所以此斷點的內容寬度又變回- 1110px
- 因為是使用 - flex來排版,所以預設每個欄位是等寬的- 1 
 2
 3
 4
 5- <div class="row"> 
 <div class="col"></div>
 <div class="col"></div>
 <div class="col"></div>
 </div>
- 當然也可以指定 - .col的寬度,總和超過- 12就會自動換行- 1 
 2
 3
 4
 5- <div class="row"> 
 <div class="col-4"></div>
 <div class="col-7"></div>
 <div class="col-3"></div>
 </div>
在不同螢幕尺寸下設定不同的寬度
| 1 | .col-"螢幕尺寸"-"欄位數" | 
- Extra small ( < 576px) :.col-
- Small ( ≥ 576px) :.col-sm-
- Extra small ( ≥ 768px) :.col-md-
- Large ( ≥ 992px) :.col-lg-
- Extra large ( ≥ 1200px) :.col-xl-
Bootstrap 的響應式是 “行動版優先”,也就是 “由小到大”,以下為範例說明
| 1 | <div class="row"> | 
- 欄位預設為 12
- 螢幕尺寸 ≥ 576px時,欄位為6
- 螢幕尺寸 ≥ 768px時,欄位為3
offset 欄的推移
如果欄的位移空間與欄間隔相符合,我們就可以使用 offset 向左推移出空欄位
| 1 | .offset-"螢幕尺寸"-"推移欄位數" | 
以下範例為在螢幕尺寸 ≥ 768px 時,向左推移 4 欄位
| 1 | <div class="row"> | 
Utilities 通用類別
在 Bootstrap 中,所有共用的變數都會放在 Utilites 這個分類中,以下介紹幾個常見的類別
spacing 間隔
- 變數- 我們可以透過 - _variable.scss來修改間距數值,除了新增和刪除,也可以修改 “單位”- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- $spacer: 1rem !default; 
 $spacers: () !default;
 $spacers: map-merge (
 (
 0: 0;
 1: ($spacer * .25),
 2: ($spacer * .5),
 3: $spacer,
 4: ($spacer * 1.5),
 5: ($spacer * 3)
 ),$spacers
 );
- 符號- 1 - "屬性""方位"-"螢幕尺寸"-"數值" - 屬性 : - .m代表- margin- .p代表- padding
- 方位 : - t代表- top- r代表- right- b代表- bottm- l代表- left- x代表- left和- right- y代表- top和- bottom
 沒有給值則是四邊全方位
- 螢幕尺寸: 
 上方已提過,點選回去查看
- 數值 : - 0代表- 歸零- auto代表- auto
 其餘數值由上方變數定義,預設為- 1 ~ 5
 
flex
Bootstrap 4 使用 flex 來排版,並將所有樣式寫成 class 名稱,載入 _utilities.scss 並了解其命名規則就可以靈活運用,詳細參考以下連結