跳至主要内容 跳至文档导航

Bootstrap 由一个广泛的色彩系统支持,该系统为我们的样式和组件设置主题。这使得任何项目都能进行更全面的自定义和扩展。

颜色

在 v5.3.0 中添加

Bootstrap 的调色板在 v5.3.0 中持续扩展,变得更加细致。我们为 secondarytertiary 文本和背景颜色添加了新变量,以及 {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 颜色都可用作 Sass 变量和 Sass 映射,位于 scss/_variables.scss 文件中。为了避免文件大小增加,我们不会为每个变量创建文本或背景颜色类。相反,我们从这些颜色中选择一个子集作为 主题调色板

自定义颜色时,请务必监视对比度。如下所示,我们已向每种主色添加了三种对比度——一种用于色样的当前颜色,一种用于白色,一种用于黑色。

$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} 实用程序。你还可以对任何其他实用程序和属性执行相同操作。