カラー
Color
Bootstrapは、スタイルとコンポーネントをテーマとする広範なカラーシステムによってサポートされています。これにより、あらゆるプロジェクトにおいて、より包括的なカスタマイズと拡張が可能になります。
カラー
Added in v5.3.0Bootstrapのカラーパレットは、v5.3.0でも拡張を続け、よりニュアンス豊かになっています。新しい変数として、secondary
とtertiary
のテキストと背景色、そしてテーマカラーとして{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)
。
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変数をカスタマイズしているため、デフォルトでカラーモードにも適応します。
<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マップとして利用できます。ファイルサイズの増大を防ぐために、これらのカラーにはそれぞれテキストカラーや背景カラーとしてのクラスを設けていません。代わりに選出したカラーをテーマパレットとして用意しています。
カラーをカスタマイズする際には、コントラスト比に注目してください。以下に示すように、それぞれのメインカラーに3つのコントラスト比を用意しています。それぞれ、スウォッチの現在のカラーに対して、白色に対して、そして黒色に対してです。
Sassに関するメモ
Sassはプログラム的手法で変数を生成することができません。そのためBootstrapでは全てのティントおよびシェードに対して色の変数を用意しています。これらはまず中央の値を設定し (例: $blue-500
)、カスタムカラー関数内でSassのmix()
関数を用いて明るくしたり暗くしたりすることで生成しています。
mix()
はlighten()
やdarken()
とは異なります。前者は色を白や黒と混ぜていますが、後者は色の明度を変更しているだけです。結果として、CodePenデモより完成度の高い色の組み合わせを実現しています。
tint-color()
やshade-color()
関数は、生成する色の段階ごとに用意された$theme-color-interval
変数とmix()
しています。ソースコードはscss/_functions.scss
とscss/_variables.scss
ファイルを参照してください。
カラーSassマップ
BootstrapのソースSassファイルには、色のリストとそのhex値を簡単にループできる3つのマップがあります。
$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マップを利用しているわけではありません。今後のアップデートでは改良が行われる予定です。それまでは、このSassマップに${color}
変数を追加することを検討してください。
実例
以下がSassでこれらを使う例です:
.alpha { color: $purple; }
.beta {
color: $yellow-300;
background-color: $indigo-900;
}
カラーと背景を用いることでも、500
カラー値を使ったcolor
とbackground-color
の設定を行うことができます。
ユーティリティの作成
Added in v5.1.0Bootstrapには、すべての色変数に対するcolor
とbackground-color
ユーティリティは含まれていませんが、BootstrapのユーティリティAPIとv5.1.0で追加された拡張Sassマップを使って、これらを自分で生成することができます。
- まず、関数、変数、mixin、ユーティリティをインポートしたことを確認してください。
map-merge-multiple()
関数を使うと、複数のSassマップを新しいマップに素早くマージすることができます。- この新しい結合マップをマージして、
{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}
ユーティリティが生成されます。他のユーティリティやプロパティについても同様に行うことができます。