twitter-bootstrap-3
グリッドシステム
サーチ…
メディアクエリ
Lessファイルでは、以下のメディアクエリを使用して、グリッドシステムにキーブレークポイントを作成します。
/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */
/* Small devices (tablets, 768px and up) */
@media (min-width: @screen-sm-min) { ... }
/* Medium devices (desktops, 992px and up) */
@media (min-width: @screen-md-min) { ... }
/* Large devices (large desktops, 1200px and up) */
@media (min-width: @screen-lg-min) { ... }
これらのメディアクエリを拡張して、幅の狭いデバイスにCSSを制限する最大幅を含めることがあります。
@media (max-width: @screen-xs-max) { ... }
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
@media (min-width: @screen-lg-min) { ... }
グリッドオプション
ブートストラップグリッドシステムとは
ブートストラップグリッドシステムを使用すると、反応の速いウェブサイトのレイアウトをすばやく簡単に作成できます。
ブートストラップ3には、携帯電話、タブレット、ラップトップ、デスクトップなどさまざまな種類のデバイスのグリッドレイアウトをすばやく作成するための事前定義されたグリッドクラスが含まれています。
たとえば、.col-xs- *クラスを使用して、携帯電話などの小型のデバイス用のグリッドカラムを作成することができます。同様に、タブレットなどの小型画面デバイスの.col-sm- *クラス、.col-md- *クラスデスクトップのような中規模のデバイスや大型のデスクトップ画面の場合は.col -lg- *のために用意されています。
次の表は、新しいグリッドシステムの主要な機能の一部をまとめたものです
| 余分な小さなデバイス電話(<768px) | 小型デバイスタブレット(≥768px) | 中規模デバイスデスクトップ(≥992ピクセル) | 大型デスクトップデスクトップ(≥1200ピクセル) | |
|---|---|---|---|---|
| グリッドの動作 | いつも水平 | |||
| コンテナの幅 | なし(自動) | 750ピクセル | 970ピクセル | 1170ピクセル |
| クラスプレフィックス | .col-xs- | .col-sm- | .col-md- | .col-lg- |
| 列数 | 12 | 12 | 12 | 12 |
| 列幅 | オート | 〜62ピクセル | 〜81ピクセル | 〜97ピクセル |
| 溝幅 | 30ピクセル(列の各辺に15ピクセル) | |||
| ネスト可能 | はい | |||
| オフセット | はい | |||
| 列の順序 | はい |
縦に積み重ねられた
一組の.col-md-*グリッドクラスを使用すると、デスクトップ(中)のデバイス上で水平になる前に、モバイルデバイスとタブレットデバイスにスタックされた小さなグリッドシステムを作成できます。グリッド列を任意の.rowます。
<div class="row">
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
</div>
<div class="row">
<div class="col-md-8">.col-md-8</div>
<div class="col-md-4">.col-md-4</div>
</div>
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
</div>
<div class="row">
<div class="col-md-6">.col-md-6</div>
<div class="col-md-6">.col-md-6</div>
</div>
液体容器
一番外側の.containerを.container-fluid変更することで、固定幅のグリッドレイアウトを全幅レイアウトに変更できます。
<div class="container-fluid">
<div class="row">
...
</div>
</div>
モバイルとデスクトップ
列を単純に小さなデバイスに積み重ねたくないのですか?列に.col-xs-* .col-md-*を追加して、追加の中小デバイスグリッドクラスを使用します。すべての仕組みのより良い考え方については、下の例を参照してください。
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-xs-6">.col-xs-6</div>
<div class="col-xs-6">.col-xs-6</div>
</div>
モバイル、タブレット、デスクトップ
タブレット.col-sm-*クラスを使用して、さらにダイナミックかつパワフルなレイアウトを作成して、前の例を構築してください。
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-8">.col-xs-12 .col-sm-6 .col-md-8</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row">
<div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
<div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
<!-- Optional: clear the XS cols if their content doesn't match in height -->
<div class="clearfix visible-xs-block"></div>
<div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
</div>
列の折り返し
1つの行に12個以上の列が配置されている場合、余分な列の各グループは1つの単位として新しい行に折り返されます。
<div class="row">
<div class="col-xs-9">.col-xs-9</div>
<div class="col-xs-4">.col-xs-4<br>Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
<div class="col-xs-6">.col-xs-6<br>Subsequent columns continue along the new line.</div>
</div>
応答性の高いカラムリセット
4つの層のグリッドを使用すると、特定のブレークポイントで、列が他の列よりも大きいので、列がきれいにクリアされない問題にぶつかります。これを修正するには、 .clearfixと応答するユーティリティクラスの組み合わせを使用します。
<div class="row">
<div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
<div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
<!-- Add the extra clearfix for only the required viewport -->
<div class="clearfix visible-xs-block"></div>
<div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
<div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
</div>
応答可能なブレークポイントでの列クリアに加えて、オフセット、プッシュ、またはプルをリセットする必要があります。グリッドの例でこれを参照してください。
<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0">.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
<div class="col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lg-offset-0">.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0</div>
</div>
列をオフセットする
.col-md-offset-*クラスを使用して列を右に移動します。これらのクラスは、列の左余白を*列だけ増加させます。たとえば、 .col-md-offset-4は4列にわたって.col-md-4を移動します。
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
</div>
<div class="row">
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>
.col-*-offset-0クラスを.col-*-offset-0 、下のグリッド層からのオフセットをオーバーライドすることもできます。
<div class="row">
<div class="col-xs-6 col-sm-4">
</div>
<div class="col-xs-6 col-sm-4">
</div>
<div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-0">
</div>
</div>
列のネスト
既定のグリッドでコンテンツをネストするには、既存の.col-sm-*列内に新しい.rowと.col-sm-*列のセットを追加します。ネストされた行には、最大12個以下の列が含まれている必要があります(12個の使用可能な列をすべて使用する必要はありません)。
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-xs-8 col-sm-6">
Level 2: .col-xs-8 .col-sm-6
</div>
<div class="col-xs-4 col-sm-6">
Level 2: .col-xs-4 .col-sm-6
</div>
</div>
</div>
</div>
列の順序
.col-md-push-* .col-md-pull-* .col-md-push-*および.col-md-pull-*修飾子クラスを使用して、組み込みのグリッド列の順序を簡単に変更できます。
<div class="row">
<div class="col-md-9 col-md-push-3">.col-md-9 .col-md-push-3</div>
<div class="col-md-3 col-md-pull-9">.col-md-3 .col-md-pull-9</div>
</div>
ミックスインと変数の削減
ブートストラップには、高速レイアウトのための事前ビルドされたグリッドクラスに加えて、簡単な意味論的レイアウトを素早く生成するための変数およびミックスインが含まれています。
変数
変数は、列の数、溝の幅、および浮動列を開始するメディアクエリポイントを決定します。これらの関数を使用して、上で説明した定義済みのグリッドクラスを生成します。また、下記のカスタムミックスインも生成します。
@grid-columns: 12;
@grid-gutter-width: 30px;
@grid-float-breakpoint: 768px;
ミックスイン
ミックスインはグリッド変数とともに使用され、個々のグリッド列に対してセマンティックCSSを生成します。
// Creates a wrapper for a series of columns
.make-row(@gutter: @grid-gutter-width) {
// Then clear the floated columns
.clearfix();
@media (min-width: @screen-sm-min) {
margin-left: (@gutter / -2);
margin-right: (@gutter / -2);
}
// Negative margin nested rows out to align the content of columns
.row {
margin-left: (@gutter / -2);
margin-right: (@gutter / -2);
}
}
// Generate the extra small columns
.make-xs-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
@media (min-width: @grid-float-breakpoint) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
// Generate the small columns
.make-sm-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
@media (min-width: @screen-sm-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
// Generate the small column offsets
.make-sm-column-offset(@columns) {
@media (min-width: @screen-sm-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-push(@columns) {
@media (min-width: @screen-sm-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-pull(@columns) {
@media (min-width: @screen-sm-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the medium columns
.make-md-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
@media (min-width: @screen-md-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
// Generate the medium column offsets
.make-md-column-offset(@columns) {
@media (min-width: @screen-md-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-md-column-push(@columns) {
@media (min-width: @screen-md-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-md-column-pull(@columns) {
@media (min-width: @screen-md-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the large columns
.make-lg-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
@media (min-width: @screen-lg-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
// Generate the large column offsets
.make-lg-column-offset(@columns) {
@media (min-width: @screen-lg-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-push(@columns) {
@media (min-width: @screen-lg-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-pull(@columns) {
@media (min-width: @screen-lg-min) {
right: percentage((@columns / @grid-columns));
}
}