container
クラスは要素の幅を現在のブレイクポイントに固定するためのコンポーネントクラス。
ブレイクポイントとはレスポンシブデザインのために TailwindCSS で定義された横幅サイズの区切りのこと。その区切りサイズは以下の様に定義されている。
sm |
640px |
md |
768px |
lg |
1024px |
xl | 1280px |
2xl | 1536px |
「要素の幅を現在のブレイクポイントに固定する」とは、つまり親ブロック(この HTML のサンプルでは
body
タグ)の横幅によってこれらいずれかの横幅に固定すると言うこと。
具体的には container
の横幅は以下の特徴を持つ。
sm
(640px
) 未満の時、最大幅を親ブロックと同じサイズにする(ブレイクポイント未満は完全追従)sm
(640px
) =< md
(768px
) の間、最大幅を 640px
に固定するmd
(768px
) =< lg
(1024px
)の間、最大幅を 768px
に固定するlg
(1024px
) =< xg
(1280px
)の間、最大幅を 1024px
に固定するxl
(1280px
) =< 2xl
(1536px
)の間、最大幅を 1280px
に固定する2xl
(1536px
) 以上の時、最大幅を 1536px
に固定するcontainer
まずブロックは親ブロック body
に対して左寄せがデフォルト。
ドキュメントには container
は width: 100%;
と同じと書かれているが container
は「現在のブレイクポイントに固定する」ものなので段階的に伸縮する。
container mx-auto
mx-auto
は container
と一緒に使うとセンタリングする挙動になる。
これは mx-auto
が
margin-left: auto; margin-right: auto;であるため。ただブロックの横幅は
container
の特性 = ブレイクポイント毎の固定幅なのでその点注意。
container mx-auto w-96
container
指定にかかわらずさらに w-96
という横幅指定をしている矛盾した設定。
Chrome では container
が優先され、Safari では w-96
が優先された。実用上はあまり意味の無い設定サンプル
container mx-48
mx-48
は左右マージン12rem
と同じだが、container
は mx-auto
ではない限り左寄せになる様だ。したがって実質的に左のマージン 12rem
だけが有効になる。
そして肝心の container
の横幅の計算だが、これはマージン指定が無いとき同じ計算によって算出されるらしい。
したがってウィンドウ幅を変えたときの width
は単に container
だけを指定したブロックと同じになる。
container mx-auto px-4
追加した px-4
はあくまでコンテナブロック内のパディングであり、フレーミングには影響ない。
md:container md:mx-auto
公式ドキュメントにサンプルとして載っていたもの。
親ブロックの横幅が md
(768px
) を越えるまではウィンドウ幅に追従するが、md
(768px
) 以上になるとブレイクポイント毎の固定幅となる。
ちなみにより分かり易いように lg
に変えたところ、lg
(1024px
) を越えてもブレイクポイント毎のサイズ固定にならなかった。バグの可能性有り。