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 已經有寫好的 class1
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
並了解其命名規則就可以靈活運用,詳細參考以下連結