Bootstrap 4 tutorial

ユーティリティ(3): Flexbox / フロート / 画像置換

Flexbox

Bootstrap 4からCSS3のFlexboxを全面的に利用するようになった。ここではFlexboxを利用するためのBootstrapユーティリティについて説明する。なおFlexboxの解説は A complete guide to Flexbox がおすすめ。

記法まとめ

書式(クラス名)はFlexboxのCSSプロパティ/値に対応している(詳しくは Flexbox (W3C) または MDN - Flexbox を参照)。

display プロパティの設定 (⇒ 表示ユーティリティ)

.d(-sm|-md|-lg|-xl)?-(flex|inline-flex)

flex-direction プロパティの設定

.flex(-sm|-md|-lg|-xl)?-(row|column)(-reverse)?

justify-content プロパティの設定

.justify-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around)

align-items プロパティの設定

.align-items(-sm|-md|-lg|-xl)?-(start|end|center|baseline|stretch)

align-self プロパティの設定

.align-self(-sm|-md|-lg|-xl)?-(start|end|center|baseline|stretch)

flex プロパティの設定 (⇒ flex: 1 1 auto; )

.flex(-sm|-md|-lg|-xl)?-fill

flex-(grow|shrink) プロパティの設定

.flex(-sm|-md|-lg|-xl)?-(grow|shrink)-(0|1)

flex-wrap プロパティの設定

.flex(-sm|-md|-lg|-xl)?-(nowrap|wrap|wrap-reverse)

order プロパティの設定

.order(-sm|-md|-lg|-xl)?-(0|1|2|3|4|5|6|7|8|9|10|11|12|first|last)

align-content プロパティの設定

.align-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around|stretch)

自動マージン

.m(l|t|r|b)?-auto

縦横の配置順序

.flex(-sm|-md|-lg|-xl)?-(row|column)(-reverse)?

div.d-flex.flex-row

Flex item 1
Flex item 2
Flex item 3

div.d-flex.flex-row-reverse

Flex item 1
Flex item 2
Flex item 3

div.d-flex.flex-column

Flex item 1
Flex item 2
Flex item 3

div.d-flex.flex-column-reverse

Flex item 1
Flex item 2
Flex item 3

要素の間隔設定

.justify-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around)

.d-flex.justify-content-start

Flex item 1
Flex item 2
Flex item 3

.d-flex.justify-content-end

Flex item 1
Flex item 2
Flex item 3

.d-flex.justify-content-center

Flex item 1
Flex item 2
Flex item 3

.d-flex.justify-content-between

Flex item 1
Flex item 2
Flex item 3

.d-flex.justify-content-around

Flex item 1
Flex item 2
Flex item 3

要素の配置設定

.align-items(-sm|-md|-lg|-xl)?-(start|end|center|baseline|stretch)

In examples below, parent box heights are fixed to 5rem.

.d-flex.align-items-start

Flex item 1
Flex item 2
Flex item 3

.d-flex.align-items-end

Flex item 1
Flex item 2
Flex item 3

.d-flex.align-items-center

Flex item 1
Flex item 2
Flex item 3

.d-flex.align-items-baseline

Flex item 1
Flex item 2
Flex item 3

.d-flex.align-items-stretch

Flex item 1
Flex item 2
Flex item 3

個別要素の配置設定

.align-self(-sm|-md|-lg|-xl)?-(start|end|center|baseline|stretch)

以下の例では親ボックスの高さを 5rem に固定し、中央の子アイテムに設定している。

中央アイテムに .align-self-start

Flex item
Aligned flex item
Flex item

中央アイテムに .align-self-end

Flex item
Aligned flex item
Flex item

中央アイテムに .align-self-center

Flex item
Aligned flex item
Flex item

中央アイテムに .align-self-baseline

Flex item
Aligned flex item
Flex item

中央アイテムに .align-self-stretch

Flex item
Aligned flex item
Flex item

フィル

.flex(-sm|-md|-lg|-xl)?-fill

子アイテムを親ボックス全体にフィルする場合は .flex-fill を設定する。子アイテムはそれぞれのコンテンツの幅(または高さ)に対応して親要素全体に引き延ばされる。

例: 各アイテムに .flex-fill を設定

Short
Medium length text
This is a slightly longer text content

伸び縮み

.flex(-sm|-md|-lg|-xl)?-(grow|shrink)-(0|1)

CSSの flex-grow プロパティはデフォルトで 0 に設定されている(自動的に伸びない)。特定要素だけを親要素全体に引き延ばす場合は .flex-grow-1 を用いることができる( flex-grow: 1 に設定)。

Item (flex-grow: 0)
Item with .flex-grow-1
Item (flex-grow: 0)
Item (flex-grow: 0)

CSSの flex-shrink プロパティはデフォルトで 1 に設定されている(必要に応じ折り返して縮む)。特定要素を元のサイズ以下に縮まないようにする場合は .flex-shrink-0 を用いることができる( flex-shrink: 0 に設定)。

Item with .w-100
Item with .flex-shrink-0 (does not shrink)
Item with .flex-shrink-1

自動マージン

.m(l|t|r|b)?-auto

デフォルト

Flex item 1
Flex item 2
Flex item 3

アイテム1に .mr-auto を設定

Flex item 1 .mr-auto
Flex item 2
Flex item 3

アイテム3に.ml-auto を設定

Flex item 1
Flex item 2
Flex item 3 .ml-auto

自動マージン + 個別要素配置

例1
Flex item 1 .mb-auto
Flex item 2
Flex item 3
例2
Flex item 1
Flex item 2
Flex item 3 .mt-auto

ラップ

.flex(-sm|-md|-lg|-xl)?-(nowrap|wrap|wrap-reverse)

以下の例では親ボックスの幅を 15rem に固定しライトグレーの背景を付けている。

.d-flex.flex-nowrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7

.d-flex.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7

.d-flex.flex-wrap-reverse

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7

順序

.order(-sm|-md|-lg|-xl)?-(0|1|2|3|4|5|6|7|8|9|10|11|12|first|last)

例: DOM順序は(1,2,3,4,5)、.order-* は(4,2,5,1,3)の順

Item 1 .order-4
Item 2 .order-2
Item 3 .order-5
Item 4 .order-1
Item 5 .order-3

アラインメント

.align-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around|stretch)

例: ラップ.flex-wrap との組み合わせ

.align-content-start.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

.align-content-end.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

.align-content-center.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

.align-content-between.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

.align-content-around.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

.align-content-stretch.flex-wrap

Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8

フロート

要素フローティングの設定(左右配置して後続インライン要素をボックス内回り込み処理)

基本設定

.float-(left|right|none)

img.float-left

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

img.float-right

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

img.float-none

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

レスポンシブ設定

.float-(sm|md|lg|xl)-(left|right|none)

設定例

.float-sm-left

幅≧576pxで左フロート

通常テキスト

.float-sm-right

幅≧576pxで右フロート

通常テキスト

.float-md-left

幅≧768pxで左フロート

通常テキスト

.float-md-right

幅≧768pxで右フロート

通常テキスト

.float-lg-left

幅≧992pxで左フロート

通常テキスト

.float-lg-right

幅≧992pxで右フロート

通常テキスト

.float-xl-left

幅≧1200pxで左フロート

通常テキスト

.float-xl-right

幅≧1200pxで右フロート

通常テキスト

画像置換

サイトのタイトルやロゴに専用画像を用いる場合の対応法(以下例)

設定例(テキスト Sample Logo は表示されないがマークアップとして認識される)

Sample Logo