Colors#
{ { < added-in "5.3.0" }}
Bootstrap's color palette has continued to expand and become more nuanced in
v5.3.0. We've added new variables for secondary
and tertiary
text and
background colors, plus {color}-bg-subtle
, {color}-border-subtle
, and
{color}-text-emphasis
for our theme colors. These new colors are available
through Sass and CSS variables (but not our color maps or utility classes) with
the express goal of making it easier to customize across multiple colors modes
like light and dark. These new variables are globally set on :root
and are
adapted for our new dark color mode while our original theme colors remain
unchanged.
Colors ending in -rgb
provide the red, green, blue
values for use in rgb()
and rgba()
color modes. For example, rgba(var(--bs-secondary-bg-rgb), .5)
.
{ { < callout warning}} Heads up! There's some potential confusion with our new secondary and tertiary colors, and our existing secondary theme color, as well as our light and dark theme colors. Expect this to be ironed out in v6. { { < /callout }}
Description | Swatch | Variables |
---|---|---|
{ { < markdown }}**Body —** Default foreground (color) and background, including components.{ { < /markdown }} |
|
{ { < markdown }}`--bs-body-color` `--bs-body-color-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-body-bg` `--bs-body-bg-rgb`{ { < /markdown }} |
|
{ { < markdown }}**Secondary —** Use the `color` option for lighter text. Use the `bg` option for dividers and to indicate disabled component states.{ { < /markdown }} |
|
{ { < markdown }}`--bs-secondary-color` `--bs-secondary-color-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-secondary-bg` `--bs-secondary-bg-rgb`{ { < /markdown }} |
|
{ { < markdown }}**Tertiary —** Use the `color` option for even lighter text. Use the `bg` option to style backgrounds for hover states, accents, and wells.{ { < /markdown }} |
|
{ { < markdown }}`--bs-tertiary-color` `--bs-tertiary-color-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-tertiary-bg` `--bs-tertiary-bg-rgb`{ { < /markdown }} |
|
{ { < markdown }}**Emphasis —** For higher contrast text. Not applicable for backgrounds.{ { < /markdown }} |
|
{ { < markdown }}`--bs-emphasis-color` `--bs-emphasis-color-rgb`{ { < /markdown }} |
{ { < markdown }}**Border —** For component borders, dividers, and rules. Use `--bs-border-color-translucent` to blend with backgrounds with an `rgba()` value.{ { < /markdown }} |
|
{ { < markdown }}`--bs-border-color` `--bs-border-color-rgb`{ { < /markdown }} |
{ { < markdown }}**Primary —** Main theme color, used for hyperlinks, focus styles, and component and form active states.{ { < /markdown }} |
|
{ { < markdown }}`--bs-primary` `--bs-primary-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-primary-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-primary-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-primary-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Success —** Theme color used for positive or successful actions and information.{ { < /markdown }} |
|
{ { < markdown }}`--bs-success` `--bs-success-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-success-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-success-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-success-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Danger —** Theme color used for errors and dangerous actions.{ { < /markdown }} |
|
{ { < markdown }}`--bs-danger` `--bs-danger-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-danger-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-danger-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-danger-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Warning —** Theme color used for non-destructive warning messages.{ { < /markdown }} |
|
{ { < markdown }}`--bs-warning` `--bs-warning-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-warning-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-warning-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-warning-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Info —** Theme color used for neutral and informative content.{ { < /markdown }} |
|
{ { < markdown }}`--bs-info` `--bs-info-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-info-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-info-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-info-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Light —** Additional theme option for less contrasting colors.{ { < /markdown }} |
|
{ { < markdown }}`--bs-light` `--bs-light-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-light-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-light-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-light-text-emphasis`{ { < /markdown }} | |
{ { < markdown }}**Dark —** Additional theme option for higher contrasting colors.{ { < /markdown }} |
|
{ { < markdown }}`--bs-dark` `--bs-dark-rgb`{ { < /markdown }} |
|
{ { < markdown }}`--bs-dark-bg-subtle`{ { < /markdown }} | |
|
{ { < markdown }}`--bs-dark-border-subtle`{ { < /markdown }} | |
Text
|
{ { < markdown }}`--bs-dark-text-emphasis`{ { < /markdown }} |
Using the new colors#
These new colors are accessible via CSS variables and utility classes—like
--bs-primary-bg-subtle
and .bg-primary-subtle
—allowing you to compose your
own CSS rules with the variables, or to quickly apply styles via classes. The
utilities are built with the color's associated CSS variables, and since we
customize those CSS variables for dark mode, they are also adaptive to color
mode by default.
{ {< example >} }
{ {< /example >} }
Theme colors#
We use a subset of all colors to create a smaller color palette for generating
color schemes, also available as Sass variables and a Sass map in Bootstrap's
scss/_variables.scss
file.
All these colors are available as a Sass map, $theme-colors
.
{ { < scss-docs name="theme-colors-map" file="scss/_variables.scss" }}
Check out our Sass maps and loops docs for how to modify these colors.
All colors#
All Bootstrap colors are available as Sass variables and a Sass map in
scss/_variables.scss
file. To avoid increased file sizes, we don't create text
or background color classes for each of these variables. Instead, we choose a
subset of these colors for a theme palette.
Be sure to monitor contrast ratios as you customize colors. As shown below, we've added three contrast ratios to each of the main colors—one for the swatch' s current colors, one for against white, and one for against black.
Notes on Sass#
Sass cannot programmatically generate variables, so we manually created
variables for every tint and shade ourselves. We specify the midpoint value (
e.g., $blue-500
) and use custom color functions to tint (lighten) or shade (
darken) our colors via Sass's mix()
color function.
Using mix()
is not the same as lighten()
and darken()
—the former blends
the specified color with white or black, while the latter only adjusts the
lightness value of each color. The result is a much more complete suite of
colors, as shown in this CodePen demo.
Our tint-color()
and shade-color()
functions use mix()
alongside our
$theme-color-interval
variable, which specifies a stepped percentage value for
each mixed color we produce. See the scss/_functions.scss
and
scss/_variables.scss
files for the full source code.
Color Sass maps#
Bootstrap's source Sass files include three maps to help you quickly and easily loop over a list of colors and their hex values.
$colors
lists all our available base (500
) colors$theme-colors
lists all semantically named theme colors (shown below)$grays
lists all tints and shades of gray
Within scss/_variables.scss
, you'll find Bootstrap's color variables and Sass
map. Here's an example of the $colors
Sass map:
{ { < scss-docs name="colors-map" file="scss/_variables.scss" }}
Add, remove, or modify values within the map to update how they're used in many
other components. Unfortunately at this time, not every component utilizes
this Sass map. Future updates will strive to improve upon this. Until then, plan
on making use of the ${color}
variables and this Sass map.
Example#
Here's how you can use these in your Sass:
.alpha { color: $purple; }
.beta {
color: $yellow-300;
background-color: $indigo-900;
}
Color and background utility classes are also available for setting
color
and background-color
using the 500
color values.
Generating utilities#
{ { < added-in "5.1.0" }}
Bootstrap doesn't include color
and background-color
utilities for every
color variable, but you can generate these yourself with our utility API and our extended Sass maps added in v5.1.0.
- To start, make sure you've imported our functions, variables, mixins, and utilities.
- Use our
map-merge-multiple()
function to quickly merge multiple Sass maps together in a new map. - Merge this new combined map to extend any utility with a
{color}-{level}
class name.
Here's an example that generates text color utilities (e.g., .text-purple-500
)
using the above steps.
@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";
This will generate new .text-{color}-{level}
utilities for every color and
level. You can do the same for any other utility and property as well.