跳至主要內容 跳至文件導覽

Bootstrap 由廣泛的色彩系統支援,可為我們的樣式和元件設定主題。這能為任何專案提供更全面的自訂和擴充功能。

顏色

v5.3.0 中新增

Bootstrap 的調色盤在 v5.3.0 中持續擴充並變得更細緻。我們新增了 `secondary` 和 `tertiary` 文字和背景顏色的新變數,加上 `{color}-bg-subtle`、`{color}-border-subtle` 和 `{color}-text-emphasis` 給我們的佈景主題顏色。這些新顏色可透過 Sass 和 CSS 變數(但不是我們的顏色對應或實用程式類別)取得,其明確目標是讓自訂化在多種色彩模式(例如淺色和深色)中變得更容易。這些新變數會在 `:root` 上設定為全域,並針對我們新的深色模式進行調整,而我們原本的佈景主題顏色則維持不變。

以 `-rgb` 結尾的顏色會提供 `red, green, blue` 值,可用於 `rgb()` 和 `rgba()` 顏色模式。例如,`rgba(var(--bs-secondary-bg-rgb), .5)`。

注意!我們的次要和三級顏色、現有的次要佈景主題顏色,以及我們的淺色和深色佈景主題顏色之間可能有些混淆。預計這會在 v6 中解決。
說明 色板 變數
主體 — 預設的前景(顏色)和背景,包括元件。
 
--bs-body-color
--bs-body-color-rgb
 
--bs-body-bg
--bs-body-bg-rgb
次要 — 使用 `color` 選項來取得較淺的文字。使用 `bg` 選項來取得分隔線,並指出已停用的元件狀態。
 
--bs-secondary-color
--bs-secondary-color-rgb
 
--bs-secondary-bg
--bs-secondary-bg-rgb
三級 — 使用 `color` 選項來取得更淺的文字。使用 `bg` 選項來設定懸停狀態、重點和區塊的背景樣式。
 
--bs-tertiary-color
--bs-tertiary-color-rgb
 
--bs-tertiary-bg
--bs-tertiary-bg-rgb
強調 — 適用於對比度較高的文字。不適用於背景。
 
--bs-emphasis-color
--bs-emphasis-color-rgb
邊框 — 適用於元件邊框、分隔線和規則。使用 --bs-border-color-translucent 可與具有 rgba() 值的背景融合。
 
--bs-border-color
--bs-border-color-rgb
主要 — 主題顏色,用於超連結、焦點樣式、元件和表單的活動狀態。
 
--bs-primary
--bs-primary-rgb
 
--bs-primary-bg-subtle
 
--bs-primary-border-subtle
文字
--bs-primary-text-emphasis
成功 — 用於正面或成功動作和資訊的主題顏色。
 
--bs-success
--bs-success-rgb
 
--bs-success-bg-subtle
 
--bs-success-border-subtle
文字
--bs-success-text-emphasis
危險 — 用於錯誤和危險動作的主題顏色。
 
--bs-danger
--bs-danger-rgb
 
--bs-danger-bg-subtle
 
--bs-danger-border-subtle
文字
--bs-danger-text-emphasis
警告 — 用於非破壞性警告訊息的主題顏色。
 
--bs-warning
--bs-warning-rgb
 
--bs-warning-bg-subtle
 
--bs-warning-border-subtle
文字
--bs-warning-text-emphasis
資訊 — 用於中立和資訊性內容的主題顏色。
 
--bs-info
--bs-info-rgb
 
--bs-info-bg-subtle
 
--bs-info-border-subtle
文字
--bs-info-text-emphasis
淺色 — 適用於對比度較低顏色的其他主題選項。
 
--bs-light
--bs-light-rgb
 
--bs-light-bg-subtle
 
--bs-light-border-subtle
文字
--bs-light-text-emphasis
深色 — 適用於對比度較高顏色的其他主題選項。
 
--bs-dark
--bs-dark-rgb
 
--bs-dark-bg-subtle
 
--bs-dark-border-subtle
文字
--bs-dark-text-emphasis

使用新的顏色

這些新顏色可透過 CSS 變數和工具程式類別存取,例如 --bs-primary-bg-subtle.bg-primary-subtle,讓你可以使用變數撰寫自己的 CSS 規則,或透過類別快速套用樣式。這些工具程式是使用與顏色相關的 CSS 變數建置的,而且由於我們會針對深色模式自訂這些 CSS 變數,因此它們在預設情況下也會適應顏色模式。

使用工具程式的範例元素
html
<div class="p-3 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
  Example element with utilities
</div>

主題顏色

我們使用所有顏色的子集來建立較小的調色盤,以產生配色方案,也可以在 Bootstrap 的 scss/_variables.scss 檔案中作為 Sass 變數和 Sass 地圖取得。

主要
次要
成功
危險
警告
資訊
淺色
深色

所有這些顏色都可以作為 Sass 地圖 $theme-colors 取得。

$theme-colors: (
  "primary":    $primary,
  "secondary":  $secondary,
  "success":    $success,
  "info":       $info,
  "warning":    $warning,
  "danger":     $danger,
  "light":      $light,
  "dark":       $dark
);

查看 我們的 Sass 地圖和迴圈文件,了解如何修改這些顏色。

所有顏色

所有 Bootstrap 顏色都可以在 scss/_variables.scss 檔案中作為 Sass 變數和 Sass 地圖取得。為了避免檔案大小增加,我們不會為每個變數建立文字或背景顏色類別。相反地,我們會從這些顏色中選擇一個子集作為 主題調色盤

自訂顏色時,請務必監控對比度。如下所示,我們已針對每個主要顏色新增三個對比度,一個是色票的目前顏色,一個是對比白色,另一個是對比黑色。

$blue #0d6efd
$blue-100
$blue-200
$blue-300
$blue-400
$blue-500
$blue-600
$blue-700
$blue-800
$blue-900
$indigo #6610f2
$indigo-100
$indigo-200
$indigo-300
$indigo-400
$indigo-500
$indigo-600
$indigo-700
$indigo-800
$indigo-900
$purple #6f42c1
$purple-100
$purple-200
$purple-300
$purple-400
$purple-500
$purple-600
$purple-700
$purple-800
$purple-900
$pink #d63384
$pink-100
$pink-200
$pink-300
$pink-400
$pink-500
$pink-600
$pink-700
$pink-800
$pink-900
$red #dc3545
$red-100
$red-200
$red-300
$red-400
$red-500
$red-600
$red-700
$red-800
$red-900
$orange #fd7e14
$orange-100
$orange-200
$orange-300
$orange-400
$orange-500
$orange-600
$orange-700
$orange-800
$orange-900
$yellow #ffc107
$yellow-100
$yellow-200
$yellow-300
$yellow-400
$yellow-500
$yellow-600
$yellow-700
$yellow-800
$yellow-900
$green #198754
$green-100
$green-200
$green-300
$green-400
$green-500
$green-600
$green-700
$green-800
$green-900
$teal #20c997
$teal-100
$teal-200
$teal-300
$teal-400
$teal-500
$teal-600
$teal-700
$teal-800
$teal-900
$cyan #0dcaf0
$cyan-100
$cyan-200
$cyan-300
$cyan-400
$cyan-500
$cyan-600
$cyan-700
$cyan-800
$cyan-900
$gray-500 #adb5bd
$gray-100
$gray-200
$gray-300
$gray-400
$gray-500
$gray-600
$gray-700
$gray-800
$gray-900
$black #000
$white #fff

Sass 備註

Sass 無法以程式化產生變數,因此我們手動為每個色調和陰影建立變數。我們指定中點值(例如 $blue-500),並使用自訂色彩函數透過 Sass 的 mix() 色彩函數來調色(變亮)或陰影(變暗)我們的色彩。

使用 mix()lighten()darken() 不同,前者會將指定色彩與白色或黑色混合,而後者只會調整每個色彩的明度值。結果是一組更完整的色彩,如 此 CodePen 示範 所示。

我們的 tint-color()shade-color() 函數使用 mix() 與我們的 $theme-color-interval 變數,它會為我們產生的每個混合色彩指定一個階梯式百分比值。請參閱 scss/_functions.scssscss/_variables.scss 檔案以取得完整的原始碼。

色彩 Sass 地圖

Bootstrap 的原始 Sass 檔案包含三個地圖,可協助您快速且輕鬆地迴圈一組色彩及其十六進位值。

  • $colors 列出我們所有可用的基本(500)色彩
  • $theme-colors 列出所有語意命名的主題色彩(如下所示)
  • $grays 列出所有色調和陰影的灰色

scss/_variables.scss 中,您會找到 Bootstrap 的色彩變數和 Sass 地圖。以下是 $colors Sass 地圖的範例

$colors: (
  "blue":       $blue,
  "indigo":     $indigo,
  "purple":     $purple,
  "pink":       $pink,
  "red":        $red,
  "orange":     $orange,
  "yellow":     $yellow,
  "green":      $green,
  "teal":       $teal,
  "cyan":       $cyan,
  "black":      $black,
  "white":      $white,
  "gray":       $gray-600,
  "gray-dark":  $gray-800
);

新增、移除或修改地圖中的值,以更新它們在許多其他組件中的使用方式。遺憾的是,目前並非每個組件都使用此 Sass 地圖。未來的更新將致力於改進這一點。在此之前,請計畫使用 ${color} 變數和此 Sass 地圖。

範例

以下是如何在 Sass 中使用這些內容

.alpha { color: $purple; }
.beta {
  color: $yellow-300;
  background-color: $indigo-900;
}

色彩背景 實用程式類別也可使用 500 色彩值設定 colorbackground-color

產生實用程式

在 v5.1.0 中新增

Bootstrap 並未針對每個色彩變數包含 colorbackground-color 實用程式,但您可以使用我們的 實用程式 API 和在 v5.1.0 中新增的延伸 Sass 地圖自行產生這些實用程式。

  1. 首先,請確定您已匯入我們的函數、變數、混合和實用程式。
  2. 使用我們的 map-merge-multiple() 函數,將多個 Sass 地圖快速合併到新的地圖中。
  3. 合併此新的合併地圖,以延伸任何具有 {color}-{level} 類別名稱的實用程式。

以下是一個範例,它使用上述步驟產生文字色彩實用程式(例如,.text-purple-500)。

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/variables-dark";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";

$all-colors: map-merge-multiple($blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans);

$utilities: map-merge(
  $utilities,
  (
    "color": map-merge(
      map-get($utilities, "color"),
      (
        values: map-merge(
          map-get(map-get($utilities, "color"), "values"),
          (
            $all-colors
          ),
        ),
      ),
    ),
  )
);

@import "bootstrap/scss/utilities/api";

這將為每個色彩和層級產生新的 .text-{color}-{level} 實用程式。您也可以對任何其他實用程式和屬性執行相同的動作。