Bootstrapプロジェクトのレイアウトのためのコンポーネントとオプション。ラッピングコンテナ、強力なグリッドシステム、柔軟なメディアオブジェクト、レスポンシブユーティリティクラスなど。

コンテナ

コンテナはBootstrapで最も基本的なレイアウト要素であり、**デフォルトのグリッドシステムを使用する際には必須**です。コンテナは、コンテンツを囲み、パディングを与え、(場合によっては)中央に配置するために使用されます。コンテナは入れ子にすることもできますが、ほとんどのレイアウトでは入れ子になったコンテナは必要ありません。

Bootstrapには、3種類の異なるコンテナが用意されています。

  • .containerは、各レスポンシブブレークポイントでmax-widthを設定します。
  • .container-fluidは、すべてのブレークポイントでwidth: 100%になります。
  • .container-{breakpoint}は、指定されたブレークポイントまでwidth: 100%になります。

下の表は、各コンテナのmax-widthが、各ブレークポイントで元の.container.container-fluidとどのように比較されるかを示しています。

グリッドの例で、動作を確認し、比較することができます。

Extra small
<576px
Small
≥576px
Medium
≥768px
Large
≥992px
Extra large
≥1200px
.container 100% 540px 720px 960px 1140px
.container-sm 100% 540px 720px 960px 1140px
.container-md 100% 100% 720px 960px 1140px
.container-lg 100% 100% 100% 960px 1140px
.container-xl 100% 100% 100% 100% 1140px
.container-fluid 100% 100% 100% 100% 100%

オールインワン

デフォルトの.containerクラスは、レスポンシブな固定幅のコンテナです。つまり、そのmax-widthは各ブレークポイントで変化します。

<div class="container">
  <!-- Content here -->
</div>

フル幅

ビューポート全体の幅に広がるフル幅コンテナには、.container-fluidを使用します。

<div class="container-fluid">
  ...
</div>

レスポンシブ

レスポンシブコンテナはBootstrap v4.4の新機能です。指定されたブレークポイントに達するまで100%の幅となるクラスを指定でき、その後、より高いブレークポイントごとにmax-widthが適用されます。たとえば、.container-smは、smブレークポイントに達するまで100%の幅で、その後mdlgxlと共に拡大されます。

<div class="container-sm">100% wide until small breakpoint</div>
<div class="container-md">100% wide until medium breakpoint</div>
<div class="container-lg">100% wide until large breakpoint</div>
<div class="container-xl">100% wide until extra large breakpoint</div>

レスポンシブブレークポイント

Bootstrapはモバイルファーストを念頭に開発されているため、いくつかのメディアクエリを使用して、レイアウトとインターフェースに適切なブレークポイントを作成しています。これらのブレークポイントは、主に最小ビューポート幅に基づいており、ビューポートが変化するにつれて要素を拡大できます。

Bootstrapは、レイアウト、グリッドシステム、コンポーネントのソースSassファイルで、主に以下のメディアクエリ範囲(またはブレークポイント)を使用しています。

// Extra small devices (portrait phones, less than 576px)
// No media query for `xs` since this is the default in Bootstrap

// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }

// Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }

// Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... }

// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }

ソースCSSをSassで記述しているため、すべてのメディアクエリはSassミキシンで利用できます。

// No media query necessary for xs breakpoint as it's effectively `@media (min-width: 0) { ... }`
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// Example: Hide starting at `min-width: 0`, and then show at the `sm` breakpoint
.custom-class {
  display: none;
}
@include media-breakpoint-up(sm) {
  .custom-class {
    display: block;
  }
}

逆方向(指定された画面サイズ以下)のメディアクエリを時々使用します。

// Extra small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }

// Small devices (landscape phones, less than 768px)
@media (max-width: 767.98px) { ... }

// Medium devices (tablets, less than 992px)
@media (max-width: 991.98px) { ... }

// Large devices (desktops, less than 1200px)
@media (max-width: 1199.98px) { ... }

// Extra large devices (large desktops)
// No media query since the extra-large breakpoint has no upper bound on its width
ブラウザが現在範囲コンテキストクエリをサポートしていないため、min-およびmax-プレフィックスと、小数幅のビューポート(高dpiデバイスのある条件下で発生する可能性があります)の制限を回避するために、これらの比較にはより高い精度の値を使用しています。

これらのメディアクエリも、Sassミキシンで利用できます。

@include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
// No media query necessary for xl breakpoint as it has no upper bound on its width

// Example: Style from medium breakpoint and down
@include media-breakpoint-down(md) {
  .custom-class {
    display: block;
  }
}

最小および最大のブレークポイント幅を使用して、画面サイズの単一セグメントをターゲットにするメディアクエリとミキシンもあります。

// Extra small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }

// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) and (max-width: 767.98px) { ... }

// Medium devices (tablets, 768px and up)
@media (min-width: 768px) and (max-width: 991.98px) { ... }

// Large devices (desktops, 992px and up)
@media (min-width: 992px) and (max-width: 1199.98px) { ... }

// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }

これらのメディアクエリも、Sassミキシンで利用できます。

@include media-breakpoint-only(xs) { ... }
@include media-breakpoint-only(sm) { ... }
@include media-breakpoint-only(md) { ... }
@include media-breakpoint-only(lg) { ... }
@include media-breakpoint-only(xl) { ... }

同様に、メディアクエリは複数のブレークポイント幅にまたがる場合があります。

// Example
// Apply styles starting from medium devices and up to extra large devices
@media (min-width: 768px) and (max-width: 1199.98px) { ... }

同じ画面サイズ範囲をターゲットにするSassミキシンは次のようになります。

@include media-breakpoint-between(md, xl) { ... }

Z-index

いくつかのBootstrapコンポーネントはz-index(コンテンツを配置するために3番目の軸を提供するレイアウトの制御に役立つCSSプロパティ)を使用しています。Bootstrapでは、ナビゲーション、ツールチップとポップオーバー、モーダルなどを適切に重ね合わせるように設計されたデフォルトのz-indexスケールを使用しています。

これらのより高い値は、任意の数字から始まり、理想的には競合を避けるために十分に高くなっています。レイヤードコンポーネント(ツールチップ、ポップオーバー、ナビゲーションバー、ドロップダウン、モーダル)全体で、これらの標準セットが必要なため、動作を合理的に一貫させることができます。100以上または500以上を使用することもできました。

これらの個々の値のカスタマイズは推奨しません。1つを変更する場合は、すべてを変更する必要があります。

$zindex-dropdown:          1000 !default;
$zindex-sticky:            1020 !default;
$zindex-fixed:             1030 !default;
$zindex-modal-backdrop:    1040 !default;
$zindex-modal:             1050 !default;
$zindex-popover:           1060 !default;
$zindex-tooltip:           1070 !default;

コンポーネント内(例:入力グループのボタンと入力)の重複するボーダーを処理するために、デフォルト、ホバー、アクティブ状態に123という低い1桁のz-index値を使用しています。ホバー/フォーカス/アクティブでは、特定の要素をより高いz-index値で前面に表示して、兄弟要素の上にボーダーを表示します。