Skip to main content Skip to docs navigation
Color

Bootstrapは、スタイルとコンポーネントをテーマとする広範なカラーシステムによってサポートされています。これにより、あらゆるプロジェクトにおいて、より包括的なカスタマイズと拡張が可能になります。

カラー

Added in v5.3.0

Bootstrapのカラーパレットは、v5.3.0でも拡張を続け、よりニュアンス豊かになっています。新しい変数として、secondarytertiaryのテキストと背景色、そしてテーマカラーとして{color}-bg-subtle{color}-border-subtle{color}-textを追加しました。これらの新しい色はSassとCSS変数(カラーマップやユーティリティクラスではありません)を通して利用可能で、lightやdarkのような複数のカラーモードでのカスタマイズを容易にするという明確な目標があります。これらの新しい変数は:rootにグローバルに設定され、新しいダークカラーモードに適用されます。

-rgbで終わる色はrgb()rgba()カラーモードで使用するred, green, blueの値を提供します。例えば、rgba(var(--bs-secondary-bg-rgb), .5)

気をつけよう! 新しい二次色と三次色、既存の二次テーマカラー、そしてライトとダークのテーマカラーが混同される可能性があります。v6で改善されることを期待しています。
Description Swatch Variables
Body — コンポーネントを含むデフォルトの前景(色)と背景。
 
--bs-body-color
--bs-body-color-rgb
 
--bs-body-bg
--bs-body-bg-rgb
Secondary — テキストを薄くするにはcolorオプションを使う。bgオプションは、仕切りや無効なコンポーネントの状態を示すのに使用する。
 
--bs-secondary-color
--bs-secondary-color-rgb
 
--bs-secondary-bg
--bs-secondary-bg-rgb
Tertiary — colorオプションでテキストをさらに明るく。ホバー状態、アクセント、ウェルの背景をスタイルするには、bgオプションを使用する。
 
--bs-tertiary-color
--bs-tertiary-color-rgb
 
--bs-tertiary-bg
--bs-tertiary-bg-rgb
Emphasis — コントラストの高いテキスト用。背景には使用できない。
 
--bs-emphasis-color
--bs-emphasis-color-rgb
Border — コンポーネントのボーダー、仕切り、罫線用。--bs-border-color-translucentを使用すると、rgba()値を持つ背景と調和する。
 
--bs-border-color
--bs-border-color-rgb
Primary — メインテーマの色で、ハイパーリンク、フォーカススタイル、コンポーネントやフォームのアクティブ状態に使用する。
 
--bs-primary
--bs-primary-rgb
 
--bs-primary-bg-subtle
 
--bs-primary-border-subtle
Text
--bs-primary-text-emphasis
Success — ポジティブな行動や成功した情報に使われるテーマカラー。
 
--bs-success
--bs-success-rgb
 
--bs-success-bg-subtle
 
--bs-success-border-subtle
Text
--bs-success-text-emphasis
Danger — エラーや危険な行為に使われるテーマカラー。
 
--bs-danger
--bs-danger-rgb
 
--bs-danger-bg-subtle
 
--bs-danger-border-subtle
Text
--bs-danger-text-emphasis
Warning — 非破壊警告メッセージに使用されるテーマカラー。
 
--bs-warning
--bs-warning-rgb
 
--bs-warning-bg-subtle
 
--bs-warning-border-subtle
Text
--bs-warning-text-emphasis
Info — 中立的で有益なコンテンツに使用されるテーマカラー。
 
--bs-info
--bs-info-rgb
 
--bs-info-bg-subtle
 
--bs-info-border-subtle
Text
--bs-info-text-emphasis
Light — コントラストを抑えた色のテーマオプションを追加。
 
--bs-light
--bs-light-rgb
 
--bs-light-bg-subtle
 
--bs-light-border-subtle
Text
--bs-light-text-emphasis
Dark — コントラストを強くするテーマオプションを追加。
 
--bs-dark
--bs-dark-rgb
 
--bs-dark-bg-subtle
 
--bs-dark-border-subtle
Text
--bs-dark-text-emphasis

新しいカラーを使う

これらの新しいカラーには、CSS変数やユーティリティクラス(--bs-primary-bg-subtle.bg-primary-subtleなど)を使ってアクセスすることができ、変数を使って独自のCSSルールを構成したり、クラスを使って素早くスタイルを適用したりすることができます。ユーティリティはカラーに関連するCSS変数で構築され、ダークモード用にこれらのCSS変数をカスタマイズしているため、デフォルトでカラーモードにも適応します。

Example element with utilities
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マップとして利用可能です。

Primary
Secondary
Success
Danger
Warning
Info
Light
Dark

利用可能な全てのカラーは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マップとして利用できます。ファイルサイズの増大を防ぐために、これらのカラーにはそれぞれテキストカラーや背景カラーとしてのクラスを設けていません。代わりに選出したカラーをテーマパレットとして用意しています。

カラーをカスタマイズする際には、コントラスト比に注目してください。以下に示すように、それぞれのメインカラーに3つのコントラスト比を用意しています。それぞれ、スウォッチの現在のカラーに対して、白色に対して、そして黒色に対してです。

$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はプログラム的手法で変数を生成することができません。そのためBootstrapでは全てのティントおよびシェードに対して色の変数を用意しています。これらはまず中央の値を設定し (例: $blue-500)、カスタムカラー関数内でSassのmix()関数を用いて明るくしたり暗くしたりすることで生成しています。

mix()lighten()darken()とは異なります。前者は色を白や黒と混ぜていますが、後者は色の明度を変更しているだけです。結果として、CodePenデモより完成度の高い色の組み合わせを実現しています。

tint-color()shade-color()関数は、生成する色の段階ごとに用意された$theme-color-interval変数とmix()しています。ソースコードはscss/_functions.scssscss/_variables.scssファイルを参照してください。

カラーSassマップ

BootstrapのソースSassファイルには、色のリストとそのhex値を簡単にループできる3つのマップがあります。

  • $colorsは全てのベース (500) カラーを持っています。
  • $theme-colorsは意味のある名前を持ったテーマカラーを持っています。
  • $graysはグレーの全ての明るさ違いの色を持っています。

scss/_variables.scss内には、Bootstrapの色変数とSassマップがあります。以下が$colorsSassマップの例です:

$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マップを利用しているわけではありません。今後のアップデートでは改良が行われる予定です。それまでは、このSassマップに${color}変数を追加することを検討してください。

実例

以下がSassでこれらを使う例です:

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

カラー背景を用いることでも、500カラー値を使ったcolorbackground-colorの設定を行うことができます。

ユーティリティの作成

Added in v5.1.0

Bootstrapには、すべての色変数に対するcolorbackground-colorユーティリティは含まれていませんが、BootstrapのユーティリティAPIとv5.1.0で追加された拡張Sassマップを使って、これらを自分で生成することができます。

  1. まず、関数、変数、mixin、ユーティリティをインポートしたことを確認してください。
  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}ユーティリティが生成されます。他のユーティリティやプロパティについても同様に行うことができます。