カラー
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マップがあります。以下が$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カラー値を使った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}ユーティリティが生成されます。他のユーティリティやプロパティについても同様に行うことができます。