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
margin(-left|-top|-right|-bottom)?
を auto
に設定する空白ユーティリティの一部。Flexboxとの組み合わせで用いることが多いためここで説明している。.flex(-sm|-md|-lg|-xl)?-(row|column)(-reverse)?
div.d-flex.flex-row
div.d-flex.flex-row-reverse
div.d-flex.flex-column
div.d-flex.flex-column-reverse
.justify-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around)
.d-flex.justify-content-start
.d-flex.justify-content-end
.d-flex.justify-content-center
.d-flex.justify-content-between
.d-flex.justify-content-around
.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
.d-flex.align-items-end
.d-flex.align-items-center
.d-flex.align-items-baseline
.d-flex.align-items-stretch
.align-self(-sm|-md|-lg|-xl)?-(start|end|center|baseline|stretch)
以下の例では親ボックスの高さを 5rem
に固定し、中央の子アイテムに設定している。
中央アイテムに .align-self-start
中央アイテムに .align-self-end
中央アイテムに .align-self-center
中央アイテムに .align-self-baseline
中央アイテムに .align-self-stretch
.flex(-sm|-md|-lg|-xl)?-fill
子アイテムを親ボックス全体にフィルする場合は .flex-fill
を設定する。子アイテムはそれぞれのコンテンツの幅(または高さ)に対応して親要素全体に引き延ばされる。
例: 各アイテムに .flex-fill
を設定
.flex(-sm|-md|-lg|-xl)?-(grow|shrink)-(0|1)
CSSの flex-grow
プロパティはデフォルトで 0
に設定されている(自動的に伸びない)。特定要素だけを親要素全体に引き延ばす場合は .flex-grow-1
を用いることができる( flex-grow: 1
に設定)。
flex-grow: 0
).flex-grow-1
flex-grow: 0
)flex-grow: 0
)CSSの flex-shrink
プロパティはデフォルトで 1
に設定されている(必要に応じ折り返して縮む)。特定要素を元のサイズ以下に縮まないようにする場合は .flex-shrink-0
を用いることができる( flex-shrink: 0
に設定)。
.w-100
.flex-shrink-0
(does not shrink).flex-shrink-1
.m(l|t|r|b)?-auto
デフォルト
アイテム1に .mr-auto
を設定
.mr-auto
アイテム3に.ml-auto
を設定
.ml-auto
.flex-column.align-items-start
+ style="height:10rem"
を設定.mb-auto
を設定.mb-auto
.flex-column.align-items-end
+ style="height:10rem"
を設定.mt-auto
を設定.mt-auto
.flex(-sm|-md|-lg|-xl)?-(nowrap|wrap|wrap-reverse)
以下の例では親ボックスの幅を 15rem
に固定しライトグレーの背景を付けている。
.d-flex.flex-nowrap
.d-flex.flex-wrap
.d-flex.flex-wrap-reverse
.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)の順
.order-4
.order-2
.order-5
.order-1
.order-3
.order-(first|last)
もあり、それぞれ先頭と最終に配置される(グリッド - 列の順序指定に説明がある)。.align-content(-sm|-md|-lg|-xl)?-(start|end|center|between|around|stretch)
例: ラップ.flex-wrap
との組み合わせ
div.flex-wrap
.align-content-(start|end|center|...)
style="width: 300px; height: 150px;"
(幅と高さを固定)div
(×8).align-content-start.flex-wrap
.align-content-end.flex-wrap
.align-content-center.flex-wrap
.align-content-between.flex-wrap
.align-content-around.flex-wrap
.align-content-stretch.flex-wrap
要素フローティングの設定(左右配置して後続インライン要素をボックス内回り込み処理)
.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で右フロート
通常テキスト
サイトのタイトルやロゴに専用画像を用いる場合の対応法(以下例)
h1.text.hide
background-image: url("../img/sample-logo.png");
width: 224px;
height: 48px;
Sample Logo
設定例(テキスト Sample Logo
は表示されないがマークアップとして認識される)