テーマのブートストラップ
Bootstrap 4 を新しい組み込みの Sass 変数でカスタマイズしてグローバル スタイル設定を行い、テーマやコンポーネントの変更を簡単にします。
Bootstrap 3 では、テーマの設定は主に、LESS の変数のオーバーライド、カスタム CSS、およびdist
ファイルに含まれている個別のテーマ スタイルシートによって行われていました。少し努力すれば、コア ファイルに手を加えることなく、Bootstrap 3 の外観を完全に再設計することができます。Bootstrap 4 は、おなじみですが、わずかに異なるアプローチを提供します。
現在、テーマは Sass 変数、Sass マップ、カスタム CSS によって実現されています。専用のテーマ スタイルシートはなくなりました。代わりに、組み込みのテーマを有効にしてグラデーションや影などを追加できます。
ソース Sass ファイルを利用して、変数、マップ、ミックスインなどを利用します。
可能な限り、Bootstrap のコア ファイルを変更しないでください。Sass の場合、Bootstrap をインポートして変更および拡張できる独自のスタイルシートを作成することを意味します。npm のようなパッケージ マネージャーを使用していると仮定すると、ファイル構造は次のようになります。
ソース ファイルをダウンロードし、パッケージ マネージャーを使用していない場合は、その構造に似たものを手動でセットアップして、Bootstrap のソース ファイルを自分のものとは別にしておく必要があります。
custom.scss
で、Bootstrap のソース Sass ファイルをインポートします。Bootstrap をすべて含めるか、必要な部分を選択するかの 2 つのオプションがあります。後者をお勧めしますが、コンポーネント間にいくつかの要件と依存関係があることに注意してください。また、プラグイン用にいくつかの JavaScript を含める必要があります。
その設定が整ったら、custom.scss
. // Optional
必要に応じて、セクションの下に Bootstrap の一部を追加することもできます。bootstrap.scss
開始点として、ファイルからの完全なインポート スタックを使用することをお勧めします。
Bootstrap 4 のすべての Sass 変数には!default
フラグが含まれており、Bootstrap のソース コードを変更することなく、独自の Sass で変数のデフォルト値をオーバーライドできます。必要に応じて変数をコピーして貼り付け、値を変更して、!default
フラグを削除します。変数が既に割り当てられている場合、Bootstrap のデフォルト値によって再割り当てされることはありません。
Bootstrap の変数の完全なリストは にありますscss/_variables.scss
。
同じ Sass ファイル内の変数オーバーライドは、デフォルト変数の前または後に配置できます。ただし、Sass ファイルをオーバーライドする場合は、Bootstrap の Sass ファイルをインポートする前にオーバーライドする必要があります。
npm 経由で Bootstrap をインポートしてコンパイルするときに、background-color
とを変更する例を次に示します。color
<body>
以下のグローバル オプションを含め、Bootstrap の任意の変数に対して必要に応じて繰り返します。
Bootstrap 4 には、関連する CSS のファミリを簡単に生成できるキーと値のペアである Sass マップがいくつか含まれています。色、グリッド ブレークポイントなどに Sass マップを使用します。Sass 変数と同様に、すべての Sass マップには!default
フラグが含まれており、オーバーライドおよび拡張できます。
一部の Sass マップは、デフォルトで空のマップにマージされます。これは、特定の Sass マップを簡単に拡張できるようにするために行われますが、マップからアイテムを削除するのが少し難しくなります。
マップの既存の色を変更するには$theme-colors
、カスタム Sass ファイルに次を追加します。
に新しい色を$theme-colors
追加するには、新しいキーと値を追加します。
$theme-colors
やその他のマップから色を削除するには、 を使用しますmap-remove
。要件とオプションの間に挿入する必要があることに注意してください。
Bootstrap は、Sass マップ内にいくつかの特定のキーが存在することを想定しており、これらを自分で使用および拡張しています。含まれているマップをカスタマイズすると、特定の Sass マップのキーが使用されている場所でエラーが発生する場合があります。
たとえば、リンク、ボタン、およびフォームの状態にはprimary
、 、success
、およびdanger
キーを使用します。$theme-colors
これらのキーの値を置き換えても問題はありませんが、削除すると Sass コンパイルの問題が発生する可能性があります。このような場合、それらの値を使用する Sass コードを変更する必要があります。
Bootstrap はいくつかの Sass 関数を利用しますが、一般的なテーマに適用できるのはサブセットのみです。カラー マップから値を取得するための 3 つの関数が含まれています。
これらを使用すると、v3 の色変数を使用する方法と同じように、Sass マップから 1 つの色を選択できます。
マップから特定のレベルの色を取得する別の関数もあり$theme-colors
ます。負のレベル値は色を明るくし、高いレベルは暗くします。
実際には、関数を呼び出して 2 つのパラメーターを渡します。色の名前$theme-colors
(プライマリまたは危険など) と数値レベルです。
将来的に追加の関数を追加するか、独自のカスタム Sass を追加して、追加の Sass マップのレベル関数を作成するか、より詳細にしたい場合は汎用関数を作成することもできます。
Bootstrap に含まれる 1 つの追加関数は、色のコントラスト関数ですcolor-yiq
。YIQ 色空間を利用して、指定された基本色に基づいて明るい ( #fff
) または暗い ( ) コントラスト カラーを自動的に返します。#111
この関数は、複数のクラスを生成しているミックスインまたはループに特に役立ちます。
たとえば、$theme-colors
マップから色見本を生成するには:
1 回限りのコントラストのニーズにも使用できます。
カラー マップ関数を使用してベース カラーを指定することもできます。
組み込みのカスタム変数ファイルを使用して Bootstrap 4 をカスタマイズし、新しい$enable-*
Sass 変数を使用してグローバル CSS 設定を簡単に切り替えます。変数の値をオーバーライドし、必要に応じて再コンパイルしnpm run test
ます。
scss/_variables.scss
これらの変数は、Bootstrap のファイルで主要なグローバル オプションを見つけてカスタマイズできます。
変数 | 値 | 説明 |
---|---|---|
$spacer |
1rem (デフォルト)、または任意の値 > 0 |
スペーサー ユーティリティをプログラムで生成するためのデフォルトのスペーサー値を指定します。 |
$enable-rounded |
true (デフォルト) またはfalse |
border-radius さまざまなコンポーネントで定義済みのスタイルを有効にします。 |
$enable-shadows |
true またはfalse (デフォルト) |
box-shadow さまざまなコンポーネントで定義済みのスタイルを有効にします。 |
$enable-gradients |
true またはfalse (デフォルト) |
background-image さまざまなコンポーネントのスタイルを介して事前定義されたグラデーションを有効にします。 |
$enable-transitions |
true (デフォルト) またはfalse |
transition さまざまなコンポーネントで定義済みの を有効にします。 |
$enable-hover-media-query |
true またはfalse (デフォルト) |
非推奨 |
$enable-grid-classes |
true (デフォルト) またはfalse |
グリッド システムの CSS クラスの生成を有効にします (例: 、、.container など)。.row .col-md-1 |
$enable-caret |
true (デフォルト) またはfalse |
で疑似要素キャレットを有効にし.dropdown-toggle ます。 |
$enable-print-styles |
true (デフォルト) またはfalse |
印刷を最適化するためのスタイルを有効にします。 |
Bootstrap のさまざまなコンポーネントとユーティリティの多くは、Sass マップで定義された一連の色によって構築されています。このマップを Sass でループして、一連のルールセットをすばやく生成できます。
Bootstrap 4 で利用可能なすべての色は、scss/_variables.scss
ファイル内の Sass 変数および Sass マップとして利用できます。これは、後続のマイナー リリースで拡張され、既に含まれているグレースケール パレットと同様に、追加の色合いが追加されます。
これらを Sass で使用する方法は次のとおりです。
color
および の設定には、カラー ユーティリティ クラスも使用できますbackground-color
。
将来的には、以下のグレースケール カラーで行ったように、各色の色合いに Sass マップと変数を提供することを目指します。
すべての色のサブセットを使用して、配色を生成するための小さなカラー パレットを作成します。これは、Sass 変数および Bootstrapsscss/_variables.scss
ファイルの Sass マップとしても利用できます。
scss/_variables.scss
プロジェクト全体で一貫したグレーの色合いを実現するための広範なグレー変数セットと Sass マップ。
内scss/_variables.scss
には、Bootstrap の色変数と Sass マップがあります。$colors
Sass マップの例を次に示します。
マップ内の値を追加、削除、または変更して、他の多くのコンポーネントでの使用方法を更新します。残念ながら、現時点では、すべてのコンポーネントがこの Sass マップを利用しているわけではありません。今後のアップデートでは、これを改善するよう努めます。それまでは、${color}
変数とこの Sass マップを利用する計画を立ててください。
Bootstrap のコンポーネントとユーティリティの多くは@each
、Sass マップを反復処理するループで構築されています。これは、コンポーネントのバリアントを生成$theme-colors
し、ブレークポイントごとにレスポンシブ バリアントを作成する場合に特に役立ちます。これらの Sass マップをカスタマイズして再コンパイルすると、これらのループに反映された変更が自動的に表示されます。
Bootstrap のコンポーネントの多くは、基本修飾子クラスのアプローチで構築されています。これは、スタイリングの大部分が基本クラス (例: .btn
) に含まれているのに対して、スタイルのバリエーションは修飾子クラス (例: .btn-danger
) に限定されていることを意味します。これらのモディファイア クラスは$theme-colors
マップから構築され、モディファイア クラスの数と名前をカスタマイズします。
コンポーネントとすべてのバックグラウンド ユーティリティ$theme-colors
に対する修飾子を生成するためにマップをループする方法の 2 つの例を次に示します。.alert
.bg-*
これらの Sass ループも、カラー マップに限定されません。コンポーネントやユーティリティのレスポンシブ バリエーションを生成することもできます。たとえば、レスポンシブ テキスト配置ユーティリティでは、 Sass マップの@each
ループとメディア クエリ インクルードが混在しています。$grid-breakpoints
を変更する必要がある場合$grid-breakpoints
、変更はそのマップを反復するすべてのループに適用されます。
Bootstrap 4 には、コンパイルされた CSSに約 20 個のCSS カスタム プロパティ (変数)が含まれています。これらは、ブラウザーのインスペクター、コード サンドボックス、または一般的なプロトタイピングで作業するときに、テーマの色、ブレークポイント、プライマリ フォント スタックなどの一般的に使用される値に簡単にアクセスできるようにします。
含める変数は次のとおりです (:root
は必須であることに注意してください)。それらは私たちの_root.scss
ファイルにあります。
CSS 変数は Sass の変数と同様の柔軟性を提供しますが、ブラウザーに提供する前にコンパイルする必要はありません。たとえば、ここではページのフォントとリンクのスタイルを CSS 変数でリセットしています。
CSS 変数 (例: --breakpoint-md
) には元々ブレークポイントが含まれていましたが、これらはメディア クエリではサポートされていませんが、メディア クエリのルールセット内で引き続き使用できます。これらのブレークポイント変数は、JavaScript で利用できるため、下位互換性のためにコンパイル済みの CSS に残ります。詳しくはスペックで。
サポートされていない例を次に示します。
サポートされているものの例を次に示します。