# Bootstrap 通用類別
###### tags: `BootStrap`
Date : 2022/05/18
## 背景
與上下文文字顏色類別相似,將元素的背景設定為任何上下文類別。背景通用類別 沒有設定 color,所以在某些情況下你需要使用 `.text-* 顏色通用類別`。

```html
<div class="p-3 mb-2 bg-primary text-white">.bg-primary</div>
<div class="p-3 mb-2 bg-secondary text-white">.bg-secondary</div>
<div class="p-3 mb-2 bg-success text-white">.bg-success</div>
<div class="p-3 mb-2 bg-danger text-white">.bg-danger</div>
<div class="p-3 mb-2 bg-warning text-dark">.bg-warning</div>
<div class="p-3 mb-2 bg-info text-dark">.bg-info</div>
<div class="p-3 mb-2 bg-light text-dark">.bg-light</div>
<div class="p-3 mb-2 bg-dark text-white">.bg-dark</div>
<div class="p-3 mb-2 bg-body text-dark">.bg-body</div>
<div class="p-3 mb-2 bg-white text-dark">.bg-white</div>
<div class="p-3 mb-2 bg-transparent text-dark">.bg-transparent</div>
```
### 背景漸層
通過添加 `.bg-gradient` 類別,將 linear gradient 作為背景圖像添加到背景中。這個漸層從半透明的白色開始,逐漸淡出到底部。
> 你的自定義 CSS 需要漸層嗎?只需添加 background-image: var(--bs-gradient);。

:::danger
需要漸層色明顯或是漸白/漸黑,可以修改"`--bs-gradient`"
:::
### 透明度 Opacity
```html
<div class="bg-primary text-white bg-opacity-10">.bg-primary</div>
```

## 邊框 (Borders)
### 增加
```html
<div class="row">
<div class="col"><span class="border border-1"></span></div>
<div class="col"><span class="border-top border-2"></span></div>
<div class="col"><span class="border-end border-3"></span></div>
<div class="col"><span class="border-bottom border-4"></span></div>
<div class="col"><span class="border-start border-5"></span></div>x
</div>
```

### 減少
```html
<div class="row">
<div class="col"><span class="border border-0"></span></div>
<div class="col"><span class="border border-top-0"></span></div>
<div class="col"><span class="border border-end-0"></span></div>
<div class="col"><span class="border border-bottom-0"></span></div>
<div class="col"><span class="border border-start-0"></span></div>
</div>
```

### 邊框顏色
```html
<div class="row">
<div class="col"><span class="border border-primary"></span></div>
<div class="col"><span class="border border-secondary"></span></div>
<div class="col"><span class="border border-success"></span></div>
<div class="col"><span class="border border-danger"></span></div>
<div class="col"><span class="border border-warning"></span></div>
<div class="col"><span class="border border-info"></span></div>
<div class="col"><span class="border border-light"></span></div>
<div class="col"><span class="border border-dark"></span></div>
<div class="col bg-secondary"><span class="border border-white"></span></div>
</div>
```

### Border-radius
```html
<img src="..." class="rounded" alt="...">
<img src="..." class="rounded-top" alt="...">
<img src="..." class="rounded-end" alt="...">
<img src="..." class="rounded-bottom" alt="...">
<img src="..." class="rounded-start" alt="...">
<img src="..." class="rounded-circle" alt="...">
<img src="..." class="rounded-pill" alt="...">
```

/
```html
<div class="row">
<div class="col">
<img src="https://picsum.photos/75/75/?random=1" class="rounded">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=2" class="rounded-top">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=3" class="rounded-end">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=4" class="rounded-bottom">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=5" class="rounded-start">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=6" class="rounded-circle">
</div>
<div class="col">
<img src="https://picsum.photos/150/75/?random=7" class="rounded-pill">
</div>
<div class="col">
<img src="https://picsum.photos/75/75/?random=8" class="rounded-0">
</div>
</div>
```

### 邊框寬度

## 顏色 (Colors)
使用 color 通用類別為文字上色。如果要為連結上色,你可以使用 .link-* helper classes。它們具有 :hover and :focus 的狀態。

```html
<p class="text-primary">.text-primary</p>
<p class="text-secondary">.text-secondary</p>
<p class="text-success">.text-success</p>
<p class="text-danger">.text-danger</p>
<p class="text-warning bg-dark">.text-warning</p>
<p class="text-info bg-dark">.text-info</p>
<p class="text-light bg-dark">.text-light</p>
<p class="text-dark">.text-dark</p>
<p class="text-body">.text-body</p>
<p class="text-muted">.text-muted</p>
<p class="text-white bg-dark">.text-white</p>
<p class="text-black-50">.text-black-50</p>
<p class="text-white-50 bg-dark">.text-white-50</p>
```
## Display
.d-{value} for xs
.d-{breakpoint}-{value} for sm, md, lg, xl, and xxl.
value 為以下其中一個:
- none
- inline
- inline-block
- block
- grid
- table
- table-cell
- table-row
- flex
- inline-flex

### 隱藏元素
d-none 隱藏
```html
<div class="d-flex justify-content-center align-items-center d-lg-none bg-primary text-white" style="width:300px;height:300px;">
lg 尺寸上消失
/div>
<div class="d-none d-lg-block bg-success text-white">xs 尺寸以上消失,lg 尺寸出現</div>
```

### 運用在列印的 Display
```html
<div class="d-print-none bg-danger text-white">螢幕出現(列印隱藏)</div>
<div class="d-none d-print-block bg-success text-white">列印出現(螢幕隱藏)</div>
<div class="d-none d-lg-block d-print-block bg-primary text-white">xs 尺寸以上消失,lg 尺寸出現,列印也會出現</div>
```
## 浮動 (Float)

```htmlembedded=
<div class="float-start">Float start on all viewport sizes</div><br>
<div class="float-end">Float end on all viewport sizes</div><br>
<div class="float-none">Don't float on all viewport sizes</div>
```
- 響應式

```htmlembedded=
<div class="float-sm-start">Float start on viewports sized SM (small) or wider</div><br>
<div class="float-md-start">Float start on viewports sized MD (medium) or wider</div><br>
<div class="float-lg-start">Float start on viewports sized LG (large) or wider</div><br>
<div class="float-xl-start">Float start on viewports sized XL (extra-large) or wider</div><br>
```

## 互動 (Interactions)
### 文字選擇
```htmlembedded=
<p class="user-select-all">當使用者點選時,這個段落將會被全選。</p>
<p class="user-select-auto">這個段落具有預設的選取行為。</p>
<p class="user-select-none">當使用者點選的時候,此段落將不會被選取</p>
```
### Pointer 事件
Bootstrap 提供 `.pe-none` 與 `.pe-auto `類別,以移除、添加元素的互動性。

```htmlembedded=
<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">這個連結</a>
不可被點選</p>
<p><a href="#" class="pe-auto">這個連結</a> 可以被點選 (此為預設行為).</p>
<p class="pe-none"><a href="#" tabindex="-1" aria-disabled="true">這個連結</a> 無法被點選,因為其 <code>pointer-events</code> 屬性繼承自父層。然而 <a href="#" class="pe-auto">這個連結</a> 具有 <code>pe-auto</code> 類別,因此可以被點選。</p>
```
- 定位堆疊造成連結可點擊的假象

可以在 particle 加上 point-event:none,這樣就具有穿透的效果。
```htmlembedded=
<div class="box">
<a href="https://www.google.com">前往連結</a>
<div class="particle"></div>
</div>
```
## 透明度 (Opacity)

```htmlembedded=
<div class="opacity-100">...</div>
<div class="opacity-75">...</div>
<div class="opacity-50">...</div>
<div class="opacity-25">...</div>
```
## 溢出 (Overflow)

```htmlembedded=
<div class="overflow-auto">...</div>
<div class="overflow-hidden">...</div>
<div class="overflow-visible">...</div>
<div class="overflow-scroll">...</div>
```
## 位置 (Position)
### 定位值
```htmlembedded=
<div class="position-static">...</div> <!--預設-->
<div class="position-relative">...</div> <!--相對定位-->
<div class="position-absolute">...</div> <!--絕對定位-->
<div class="position-fixed">...</div> <!--固定-->
<div class="position-sticky">...</div> <!--黏貼標籤-->
```
### 排列位置 : {property}-{position}
其中,property 為以下的其中一種:
- top - 用於垂直定位 top
- start - 用於水平定位 left (LTR)
- bottom - 用於垂直定位 bottom
- end - 用於水平定位 right (LTR)
其中,position 為以下的其中一種:
- 0 - 用於 0 的邊界定位
- 50 - 用於 50% 的邊界定位
- 100 - 用於 100% 的邊界定位

```htmlembedded=
<div class="position-relative">
<div class="position-absolute top-0 start-0"></div>
<div class="position-absolute top-0 end-0"></div>
<div class="position-absolute top-50 start-50"></div>
<div class="position-absolute bottom-50 end-50"></div>
<div class="position-absolute bottom-0 start-0"></div>
<div class="position-absolute bottom-0 end-0"></div>
</div>
```
### 置中
> 可以透過轉換通用類別 `.translate-middle` 將元素置中。
>此類別將 transform 之 translateX(-50%) 與 translateY(-50%) 應用於元素,並結合使用邊界定位通用類別,讓你可以把元素完全置中。
>

```htmlembedded=
<div class="box position-relative">
<div class="box1 position-absolute top-50 start-50 translate-middle"></div>
</div>
<div class="box position-relative">
<div class="box2 position-absolute start-50 translate-middle-x"></div>
</div>
<div class="box position-relative">
<div class="box3 position-absolute top-50 translate-middle-y"></div>
</div>
```

## 陰影 (Shadows)

```html
<div class="shadow-none p-3 mb-5 bg-light rounded">No shadow</div>
<div class="shadow-sm p-3 mb-5 bg-body rounded">Small shadow</div>
<div class="shadow p-3 mb-5 bg-body rounded">Regular shadow</div>
<div class="shadow-lg p-3 mb-5 bg-body rounded">Larger shadow</div>
```
## 尺寸 (Sizing)
w-*

```htmlembedded=
<div class="w-25 p-3" style="background-color: #eee;">Width 25%</div>
<div class="w-50 p-3" style="background-color: #eee;">Width 50%</div>
<div class="w-75 p-3" style="background-color: #eee;">Width 75%</div>
<div class="w-100 p-3" style="background-color: #eee;">Width 100%</div>
<div class="w-auto p-3" style="background-color: #eee;">Width auto</div>
```
h-*

```htmlembedded=
<div style="height: 100px; background-color: rgba(255,0,0,0.1);">
<div class="h-25 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 25%</div>
<div class="h-50 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 50%</div>
<div class="h-75 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 75%</div>
<div class="h-100 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 100%</div>
<div class="h-auto d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height auto</div>
</div>
```
>可以根據需求使用 max-width: 100%; 和 max-height: 100%; 通用類別。
```htmlembedded=
<!--使用通用類別來設定相對於視窗的寬度和高度。-->
# <div class="min-vw-100">Min-width 100vw</div>
# <div class="min-vh-100">Min-height 100vh</div>
# <div class="vw-100">Width 100vw</div>
<div class="vh-100">Height 100vh</div>
```
## 間隔 (Spacing) p-* / m-*
**property 設定:**
* m - 設定 margin 的類別
* p - 設定 padding 的類別
**sides 設定:**
* t - 設定 margin-top 或是 padding-top 的類別
* b - 設定 margin-bottom 或是 padding-bottom 的類別
* s - 在 LTR 設定 margin-left 或是 padding-left, RTL 設定 margin-right 或是 padding-right
* e - 在 LTR 設定 margin-right or padding-right, RTL 設定 margin-left 或是 padding-left
* x - 同時設定 *-left 和 *-right
* y - 同時設定 *-top 和 *-bottom
* 空白 - 同時設定 margin 或 padding 在元素的四個邊緣
**size 設定:**
* 0 - 設定 margin 或是 padding 為 0
* 1 - (預設) 設定 margin 或是 padding 為 $spacer * .25
* 2 - (預設) 設定 margin 或是 padding 為 $spacer * .5
* 3 - (預設) 設定 margin 或是 padding 為 $spacer
* 4 - (預設) 設定 margin 或是 padding 為 $spacer * 1.5
* 5 - (預設) 設定 margin 或是 padding 為 $spacer * 3
* auto - 設定 margin 為 auto
## 文字 (Text)
### 對齊

### Text wrap 和 overflow

### 大小寫變換

### 文字大小
