ブレイクポイント Breakpoints
Breakpointsは、Bootstrapでレスポンシブレイアウトがデバイスやビューポートサイズに応じてどのように動作するかを決定するカスタマイズ可能な幅です。
コアコンセプト
-
Breakpointsはレスポンシブデザインの構成要素です。 特定のビューポートやデバイスサイズでレイアウトを適応させるタイミングを制御するために使用します。
-
Media queriesを使用してbreakpointごとにCSSを設計します。 Media queriesは、ブラウザやオペレーティングシステムのパラメータセットに基づいてスタイルを条件付きで適用できるCSSの機能です。media queriesでは、最も一般的に
min-widthを使用します。 -
モバイルファーストのレスポンシブデザインが目標です。 BootstrapのCSSは、最小のbreakpointでレイアウトを機能させるために必要な最小限のスタイルを適用し、その後、大きなデバイス向けにデザインを調整するためのスタイルを重ねていきます。これによりCSSが最適化され、レンダリング時間が改善され、訪問者に優れた体験を提供します。
利用可能なbreakpoints
Bootstrapには、レスポンシブに構築するための6つのデフォルトbreakpoints(gridティア とも呼ばれます)が含まれています。これらのbreakpointsは、ソースのSassファイルを使用している場合にカスタマイズできます。
| Breakpoint | Class infix | Dimensions |
|---|---|---|
| Extra small | None | <576px |
| Small | sm | ≥576px |
| Medium | md | ≥768px |
| Large | lg | ≥992px |
| Extra large | xl | ≥1200px |
| Extra extra large | xxl | ≥1400px |
各breakpointは、幅が12の倍数であるcontainersを快適に保持できるように選択されています。Breakpointsは、一般的なデバイスサイズとビューポートディメンションのサブセットを表しています。すべてのユースケースやデバイスを特定のターゲットにしているわけではありません。代わりに、ほぼすべてのデバイスに対応できる強力で一貫性のある基盤を提供します。
これらのbreakpointsはSass経由でカスタマイズ可能です。_variables.scssスタイルシート内のSass mapで見つけることができます。
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
Sass mapsと変数の変更方法の詳細と例については、Gridドキュメントのcssセクションを参照してください。
Media queries
Bootstrapはモバイルファーストで開発されているため、レイアウトとインターフェースのための適切なbreakpointsを作成するために、いくつかのmedia queriesを使用しています。これらのbreakpointsは主に最小ビューポート幅に基づいており、ビューポートが変化するにつれて要素を拡大できるようになっています。
Min-width
Bootstrapは、レイアウト、gridシステム、およびコンポーネントのために、ソースのSassファイルで主に以下のmedia query範囲(またはbreakpoints)を使用しています。
// Source mixins
// 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) { ... }
@include media-breakpoint-up(xxl) { ... }
// Usage
// 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;
}
}
これらのSass mixinsは、Sass変数で宣言された値を使用して、コンパイルされたCSSに変換されます。例えば:
// X-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) { ... }
// X-Large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
// XX-Large devices (larger desktops, 1400px and up)
@media (min-width: 1400px) { ... }
Max-width
時々、反対方向(指定された画面サイズ 以下)に進むmedia queriesを使用することがあります:
// No media query necessary for xs breakpoint as it's effectively `@media (max-width: 0) { ... }`
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
@include media-breakpoint-down(xl) { ... }
@include media-breakpoint-down(xxl) { ... }
// Example: Style from medium breakpoint and down
@include media-breakpoint-down(md) {
.custom-class {
display: block;
}
}
これらのmixinsは、宣言されたbreakpointsから.02pxを引いて、max-width値として使用します。例えば:
// `xs` returns only a ruleset and no media query
// ... { ... }
// `sm` applies to x-small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }
// `md` applies to small devices (landscape phones, less than 768px)
@media (max-width: 767.98px) { ... }
// `lg` applies to medium devices (tablets, less than 992px)
@media (max-width: 991.98px) { ... }
// `xl` applies to large devices (desktops, less than 1200px)
@media (max-width: 1199.98px) { ... }
// `xxl` applies to x-large devices (large desktops, less than 1400px)
@media (max-width: 1399.98px) { ... }
なぜ.02pxを引くのですか? ブラウザは現在range context queriesをサポートしていないため、min-とmax-プレフィックスの制限と、端数幅を持つビューポート(例えば、高DPIデバイスで特定の条件下で発生する可能性があります)に対処するために、より高い精度の値を使用しています。
Single breakpoint
最小と最大のbreakpoint幅を使用して、単一の画面サイズのセグメントをターゲットにするためのmedia queriesとmixinsもあります。
@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) { ... }
@include media-breakpoint-only(xxl) { ... }
例えば、@include media-breakpoint-only(md) { ... }は次のようになります:
@media (min-width: 768px) and (max-width: 991.98px) { ... }
Between breakpoints
同様に、media queriesは複数のbreakpoint幅にまたがることができます:
@include media-breakpoint-between(md, xl) { ... }
結果は次のようになります:
// Example
// Apply styles starting from medium devices and up to extra large devices
@media (min-width: 768px) and (max-width: 1199.98px) { ... }