Sourceグリッドシステム
強力なモバイル ファースト フレックスボックス グリッドを使用して、12 カラム システム、5 つのデフォルト レスポンシブ層、Sass 変数と mixin、および多数の定義済みクラスのおかげで、あらゆる形状とサイズのレイアウトを構築します。
使い方
Bootstrap のグリッド システムは、一連のコンテナー、行、および列を使用して、コンテンツのレイアウトと配置を行います。フレックスボックスで構築されており、完全にレスポンシブです。以下は例であり、グリッドがどのように組み合わされるかを詳しく見ていきます。
flexbox は初めてですか、またはよく知りませんか? 背景、用語、ガイドライン、およびコード スニペットについては、この CSS トリック フレックスボックス ガイドをお読みください。
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
上記の例では、定義済みのグリッド クラスを使用して、小型、中型、大型、特大のデバイスに 3 つの等幅の列を作成します。これらの列は、親とともにページの中央に配置されます.container
。
それを分解すると、これがどのように機能するかです:
- コンテナーは、サイトのコンテンツを中央に配置し、水平方向にパディングする手段を提供します。
.container
レスポンシブ ピクセル幅、またはすべてのビューポートとデバイス サイズで.container-fluid
使用します。width: 100%
- 行は列のラッパーです。各列には、それらの間のスペースを制御するための水平
padding
(ガターと呼ばれる) があります。これpadding
は、負のマージンを持つ行で打ち消されます。このようにして、列のすべてのコンテンツが左側に視覚的に配置されます。
- グリッド レイアウトでは、コンテンツは列内に配置する必要があり、列のみが行の直接の子になることができます。
- フレックスボックスのおかげで、指定されていないグリッド列
width
は自動的に等幅の列としてレイアウトされます。たとえば、 の 4 つのインスタンス.col-sm
はそれぞれ、小さなブレークポイントから 25% 幅になります。その他の例については、列の自動レイアウトのセクションを参照してください。
- 列クラスは、行ごとに可能な 12 のうち、使用したい列の数を示します。したがって、3 つの等幅の列が必要な場合は、 を使用できます
.col-4
。
- 列
width
はパーセンテージで設定されるため、常に流動的で、親要素に対して相対的なサイズになります。
padding
列には、個々の列の間にガターを作成するための水平がありますが、 を使用してmargin
行とpadding
列から を削除できます。.no-gutters
.row
- グリッドをレスポンシブにするために、レスポンシブ ブレークポイントごとに 1 つずつ、合計 5 つのグリッド ブレークポイントがあります。すべてのブレークポイント (極小)、小、中、大、および特大です。
- グリッド ブレークポイントは、最小幅のメディア クエリに基づいています。つまり、その 1 つのブレークポイントとその上のすべてのブレークポイントに適用されます(たとえば、
.col-sm-4
小、中、大、特大のデバイスには適用されますが、最初のxs
ブレークポイントには適用されません)。
- 定義済みのグリッド クラス ( など
.col-4
) またはSass mixinを使用して、より意味のあるマークアップを行うことができます。
一部の HTML 要素を flex コンテナーとして使用できないなど、flexbox に関する制限とバグに注意してください。
グリッド オプション
Bootstrap はem
s またはrem
s を使用してほとんどのサイズを定義しますが、px
s はグリッドのブレークポイントとコンテナーの幅に使用されます。これは、ビューポートの幅がピクセル単位であり、フォント サイズによって変化しないためです。
Bootstrap グリッド システムの側面が複数のデバイスでどのように機能するかを、便利な表で確認してください。
|
極小 <576px |
小 ≥576px |
中 ≥768px |
大 ≥992px |
特大 ≥1200px |
最大コンテナ幅 |
なし(自動) |
540px |
720px |
960px |
1140px |
クラスプレフィックス |
.col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
列数 |
12 |
ガター幅 |
30px (列の両側に 15px) |
ネスト可能 |
はい |
列の順序 |
はい |
自動レイアウト列
のような明示的な番号付けされたクラスを使用せずに、簡単に列のサイズを変更するために、ブレークポイント固有の列クラスを利用します.col-sm-6
。
等幅
たとえば、 から までのすべてのデバイスとビューポートに適用される 2 つのグリッド レイアウトを次に示しxs
ますxl
。必要なブレークポイントごとに任意の数の単位のないクラスを追加すると、すべての列が同じ幅になります。
等幅複数行
.w-100
列を改行する場所に を挿入して、複数の行にまたがる等幅の列を作成します。.w-100
いくつかのレスポンシブ表示ユーティリティと組み合わせて、ブレークをレスポンシブにします。
明示的なorなしではこれが機能しないというSafari flexbox のバグがありました。古いバージョンのブラウザには回避策がありますが、ターゲット ブラウザがバグのあるバージョンに分類されない場合は必要ありません。flex-basis
border
1 列幅の設定
フレックスボックス グリッド列の自動レイアウトは、1 つの列の幅を設定し、兄弟列のサイズを自動的に変更できることも意味します。定義済みのグリッド クラス (以下を参照)、グリッド ミックスイン、またはインライン幅を使用できます。中央の列の幅に関係なく、他の列のサイズが変更されることに注意してください。
可変幅コンテンツ
クラスを使用col-{breakpoint}-auto
して、コンテンツの自然な幅に基づいて列のサイズを調整します。
レスポンシブ クラス
Bootstrap のグリッドには、複雑なレスポンシブ レイアウトを構築するための 5 層の定義済みクラスが含まれています。極小、小、中、大、または特大のデバイスで列のサイズをカスタマイズします。
すべてのブレークポイント
最小のデバイスから最大のデバイスまで同じグリッドの場合は、 クラス.col
と.col-*
クラスを使用します。特にサイズの列が必要な場合は、番号付きクラスを指定します。それ以外の場合は、自由に固執して.col
ください。
水平に積み上げ
クラスの 1 つのセットを使用して、.col-sm-*
スタックから開始し、小さなブレークポイントで水平になる基本的なグリッド システムを作成できます ( sm
)。
ミックス&マッチ
いくつかのグリッド層に列を単純に積み上げたくないですか? 必要に応じて、層ごとに異なるクラスを組み合わせて使用します。すべてがどのように機能するかについてのより良いアイデアについては、以下の例を参照してください。
.col-md-8
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
ガター
ガターは、ブレークポイント固有のパディングと負のマージン ユーティリティ クラスによって、レスポンシブに調整できます。特定の行のガターを変更するには、 の負のマージン ユーティリティ.row
と の一致するパディング ユーティリティをペアにします.col
。.container
または親も、.container-fluid
不要なオーバーフローを避けるために、一致するパディング ユーティリティを使用して調整する必要がある場合があります。
lg
大きな ( ) ブレークポイント以上で Bootstrap グリッドをカスタマイズする例を次に示します。.col
でパディングを増やし、親でそれ.px-lg-5
を打ち消してから、でラッパーを調整しました。.mx-lg-n5
.row
.container
.px-lg-5
行の列
レスポンシブ.row-cols-*
クラスを使用して、コンテンツとレイアウトを最適にレンダリングする列の数をすばやく設定します。通常の.col-*
クラスは個々の列 (例: ) に適用されますが、行列のクラスはショートカットとして.col-md-4
親に設定されます。.row
これらの行列クラスを使用して、基本的なグリッド レイアウトをすばやく作成したり、カード レイアウトを制御したりします。
付属の Sass mixin も使用できますrow-cols()
。
アライメント
flexbox 整列ユーティリティを使用して、列を垂直方向および水平方向に整列させます。Internet Explorer 10-11 は、以下に示すようにフレックス コンテナーに がある場合、フレックス アイテムの垂直方向の配置をサポートしません。min-height
詳細については、Flexbug #3 を参照してください。
垂直方向の配置
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
3 つの列の 1 つ
水平方向の配置
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
2 つの列のうちの 1 つ
ガターなし
事前定義されたグリッド クラスの列間のガターは、 で削除できます.no-gutters
。これにより、すべての直接の子列から負margin
の s.row
と水平方向が削除されます。padding
これらのスタイルを作成するためのソース コードは次のとおりです。列のオーバーライドは、最初の子列のみにスコープが設定され、属性セレクターを介して対象となることに注意してください。これにより、より具体的なセレクターが生成されますが、列のパディングは、スペーシング ユーティリティでさらにカスタマイズできます。
端から端までの設計が必要ですか? 親.container
またはをドロップし.container-fluid
ます。
実際には、次のようになります。これは、他のすべての事前定義されたグリッド クラス (列幅、レスポンシブ ティア、並べ替えなどを含む) で引き続き使用できることに注意してください。
.col-sm-6 .col-md-8
.col-6 .col-md-4
列のラッピング
12 を超える列が 1 つの行に配置されている場合、余分な列の各グループは 1 つの単位として新しい行に折り返されます。
.col-9
.col-4
9 + 4 = 13 > 12 なので、この 4 列幅の div は、1 つの連続した単位として新しい行にラップされます。
.col-6
後続の列は新しい行に沿って続きます。
段区切り
フレックスボックスで列を新しい行に分割するには、小さなハックが必要width: 100%
です。列を新しい行にラップしたい場所に with 要素を追加します。通常、これは複数.row
の で実現されますが、すべての実装方法でこれを説明できるわけではありません。
.col-6 .col-sm-3
.col-6 .col-sm-3
.col-6 .col-sm-3
.col-6 .col-sm-3
また、レスポンシブ表示ユーティリティを使用して、特定のブレークポイントでこのブレークを適用することもできます。
.col-6 .col-sm-4
.col-6 .col-sm-4
.col-6 .col-sm-4
.col-6 .col-sm-4
並べ替え
クラスの注文
.order-
クラスを使用して、コンテンツの表示順序を制御します。これらのクラスはレスポンシブなので、order
ブレークポイント (例: .order-1.order-md-2
) を設定できます。5 つのグリッド層すべてにわたる1
スルーのサポートが含まれます。12
DOM の最初、順序は適用されません
DOM で 2 番目、大きい順序で
DOM で 3 番目、順序は 1
また、レスポンシブクラス.order-first
と( ) をそれぞれ適用して要素の.order-last
を変更するクラスもあります。これらのクラスは、必要に応じて番号付きクラスと混在させることもできます。order
order: -1
order: 13
order: $columns + 1
.order-*
DOM の先頭、最後に並べる
DOM の 2 番目、順序なし
DOM の 3 番目、最初の順序
列のオフセット
.offset-
レスポンシブグリッド クラスとマージン ユーティリティの 2 つの方法でグリッド列をオフセットできます。グリッド クラスは列に一致するようにサイズ設定されますが、オフセットの幅が可変であるクイック レイアウトには余白がより便利です。
オフセットクラス
.offset-md-*
クラスを使用して列を右に移動します。これらのクラスは、列の左マージンを列ごとに増やし*
ます。たとえば、 4 つの列を.offset-md-4
移動.col-md-4
します。
.col-md-4
.col-md-4 .offset-md-4
.col-md-3 .offset-md-3
.col-md-3 .offset-md-3
レスポンシブ ブレークポイントでの列のクリアに加えて、オフセットのリセットが必要になる場合があります。グリッドの例でこれを実際に見てください。
.col-sm-5 .col-md-6
.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0
.col-sm-6 .col-md-5 .col-lg-6
.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0
証拠金ユーティリティ
v4 のフレックスボックスへの移行により、マージン ユーティリティを使用し.mr-auto
て、兄弟列を互いに離すことができます。
.col-md-4
.col-md-4 .ml-auto
.col-md-3 .ml-md-auto
.col-md-3 .ml-md-auto
.col-auto .mr-auto
.col-auto
ネスティング
コンテンツを既定のグリッドにネストするには、既存の列内に新しい.row
一連の列を追加します。ネストされた行には、合計が 12 以下になる一連の列を含める必要があります (使用可能な 12 列すべてを使用する必要はありません)。.col-sm-*
.col-sm-*
レベル 1: .col-sm-9
レベル 2: .col-8 .col-sm-6
レベル 2: .col-4 .col-sm-6
サス ミックスイン
Bootstrap のソース Sass ファイルを使用する場合、Sass 変数と mixin を使用して、カスタム、セマンティック、および応答性の高いページ レイアウトを作成するオプションがあります。事前定義されたグリッド クラスは、これらと同じ変数と mixin を使用して、すぐに使用できるクラスのスイート全体を提供し、迅速に応答するレイアウトを実現します。
変数
変数とマップは、列の数、余白の幅、および浮動列を開始するメディア クエリ ポイントを決定します。これらを使用して、上記の事前定義されたグリッド クラスを生成するだけでなく、以下にリストするカスタム ミックスインにも使用します。
ミックスイン
Mixin はグリッド変数と組み合わせて使用され、個々のグリッド列のセマンティック CSS を生成します。
使用例
変数を独自のカスタム値に変更するか、ミックスインをデフォルト値で使用することができます。以下は、既定の設定を使用して、間に隙間のある 2 列のレイアウトを作成する例です。
グリッドのカスタマイズ
組み込みのグリッド Sass 変数とマップを使用すると、事前定義されたグリッド クラスを完全にカスタマイズできます。階層の数、メディア クエリのサイズ、およびコンテナーの幅を変更してから、再コンパイルします。
柱と樋
グリッド列の数は、Sass 変数を介して変更できます。$grid-columns
個々の列の幅 (パーセント) を生成するために使用され$grid-gutter-width
、列のガターの幅を設定します。
グリッド層
列自体を超えて、グリッド層の数をカスタマイズすることもできます. 4 つのグリッド層だけが必要な場合は、$grid-breakpoints
and$container-max-widths
を次のように更新します。
Sass 変数またはマップに変更を加える場合は、変更を保存して再コンパイルする必要があります。そうすることで、列幅、オフセット、および順序付けのための定義済みグリッド クラスの新しいセットが出力されます。レスポンシブ可視性ユーティリティも、カスタム ブレークポイントを使用するように更新されます。px
( rem
、em
、またはではなく)にグリッド値を設定してください%
。