Tailwind CSS と Flexbox および Grid レイアウト
Tailwind CSS は、特に Flexbox と Grid のレイアウトを管理するための強力なユーティリティクラスを提供しています。
Flexbox と Grid のこれらのユーティリティクラスにより、カスタム CSS を書くことなく、レスポンシブで柔軟なレイアウトを非常に効率的に作成できます。
Tailwind CSS の理念は、低レベルのユーティリティクラス(utility-first)でレイアウトを制御し、クラスを柔軟に組み合わせてさまざまなデザイン要件を満たすことです。
1、Flexbox レイアウト
Flexbox は、開発者が一次元(水平または垂直)のレイアウトを作成するのに役立つレイアウトモードです。
Tailwind CSS は、方向、整列、伸縮など、Flexbox レイアウトのさまざまな側面を制御するための簡潔なユーティリティクラスを多数提供しています。
Flex コンテナの設定
Flexbox レイアウトを作成するには、まず要素を flex コンテナに設定する必要があります。
flex は要素の display を flex に設定し、Flexbox レイアウトを有効にします。
flex アイテムの初期サイズのユーティリティクラスと、対応する CSS プロパティ:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
basis-0 | flex-basis:0px; | flex アイテムの基本サイズを 0px に設定します。 |
basis-1 | flex-basis:0.25rem; | flex アイテムの基本サイズを 4px に設定します。 |
basis-2 | flex-basis:0.5rem; | flex アイテムの基本サイズを 8px に設定します。 |
basis-3 | flex-basis:0.75rem; | flex アイテムの基本サイズを 12px に設定します。 |
basis-4 | flex-basis:1rem; | flex アイテムの基本サイズを 16px に設定します。 |
basis-5 | flex-basis:1.25rem; | flex アイテムの基本サイズを 20px に設定します。 |
basis-6 | flex-basis:1.5rem; | flex アイテムの基本サイズを 24px に設定します。 |
basis-7 | flex-basis:1.75rem; | flex アイテムの基本サイズを 28px に設定します。 |
basis-8 | flex-basis:2rem; | flex アイテムの基本サイズを 32px に設定します。 |
basis-9 | flex-basis:2.25rem; | flex アイテムの基本サイズを 36px に設定します。 |
basis-10 | flex-basis:2.5rem; | flex アイテムの基本サイズを 40px に設定します。 |
basis-11 | flex-basis:2.75rem; | flex アイテムの基本サイズを 44px に設定します。 |
basis-12 | flex-basis:3rem; | flex アイテムの基本サイズを 48px に設定します。 |
basis-14 | flex-basis:3.5rem; | flex アイテムの基本サイズを 56px に設定します。 |
basis-16 | flex-basis:4rem; | flex アイテムの基本サイズを 64px に設定します。 |
basis-20 | flex-basis:5rem; | flex アイテムの基本サイズを 80px に設定します。 |
basis-24 | flex-basis:6rem; | flex アイテムの基本サイズを 96px に設定します。 |
basis-28 | flex-basis:7rem; | flex アイテムの基本サイズを 112px に設定します。 |
basis-32 | flex-basis:8rem; | flex アイテムの基本サイズを 128px に設定します。 |
basis-36 | flex-basis:9rem; | flex アイテムの基本サイズを 144px に設定します。 |
basis-40 | flex-basis:10rem; | flex アイテムの基本サイズを 160px に設定します。 |
basis-44 | flex-basis:11rem; | flex アイテムの基本サイズを 176px に設定します。 |
basis-48 | flex-basis:12rem; | flex アイテムの基本サイズを 192px に設定します。 |
basis-52 | flex-basis:13rem; | flex アイテムの基本サイズを 208px に設定します。 |
basis-56 | flex-basis:14rem; | flex アイテムの基本サイズを 224px に設定します。 |
basis-60 | flex-basis:15rem; | flex アイテムの基本サイズを 240px に設定します。 |
basis-64 | flex-basis:16rem; | flex アイテムの基本サイズを 256px に設定します。 |
basis-72 | flex-basis:18rem; | flex アイテムの基本サイズを 288px に設定します。 |
basis-80 | flex-basis:20rem; | flex アイテムの基本サイズを 320px に設定します。 |
basis-96 | flex-basis:24rem; | flex アイテムの基本サイズを 384px に設定します。 |
basis-auto | flex-basis:auto; | flex アイテムの基本サイズを auto に設定します。 |
basis-px | flex-basis:1px; | flex アイテムの基本サイズを 1px に設定します。 |
basis-0.5 | flex-basis:0.125rem; | flex アイテムの基本サイズを 2px に設定します。 |
basis-1.5 | flex-basis:0.375rem; | flex アイテムの基本サイズを 6px に設定します。 |
basis-2.5 | flex-basis:0.625rem; | flex アイテムの基本サイズを 10px に設定します。 |
basis-3.5 | flex-basis:0.875rem; | flex アイテムの基本サイズを 14px に設定します。 |
basis-1/2 | flex-basis:50%; | flex アイテムの基本サイズをコンテナ幅の半分に設定します。 |
basis-1/3 | flex-basis:33.333333%; | flex アイテムの基本サイズをコンテナ幅の 1/3 に設定します。 |
basis-2/3 | flex-basis:66.666667%; | flex アイテムの基本サイズをコンテナ幅の 2/3 に設定します。 |
basis-1/4 | flex-basis:25%; | flex アイテムの基本サイズをコンテナ幅の 1/4 に設定します。 |
basis-2/4 | flex-basis:50%; | flex アイテムの基本サイズをコンテナ幅の 1/2 に設定します。 |
basis-3/4 | flex-basis:75%; | flex アイテムの基本サイズをコンテナ幅の 3/4 に設定します。 |
basis-1/5 | flex-basis:20%; | flex アイテムの基本サイズをコンテナ幅の 1/5 に設定します。 |
basis-2/5 | flex-basis:40%; | flex アイテムの基本サイズをコンテナ幅の 2/5 に設定します。 |
basis-3/5 | flex-basis:60%; | flex アイテムの基本サイズをコンテナ幅の 3/5 に設定します。 |
basis-4/5 | flex-basis:80%; | flex アイテムの基本サイズをコンテナ幅の 4/5 に設定します。 |
basis-1/6 | flex-basis:16.666667%; | flex アイテムの基本サイズをコンテナ幅の 1/6 に設定します。 |
basis-2/6 | flex-basis:33.333333%; | flex アイテムの基本サイズをコンテナ幅の 2/6 に設定します。 |
basis-3/6 | flex-basis:50%; | flex アイテムの基本サイズをコンテナ幅の 2/3 に設定します。 |
basis-4/6 | flex-basis:66.666667%; | flex アイテムの基本サイズをコンテナ幅の 4/6 に設定します。 |
basis-5/6 | flex-basis:83.333333%; | flex アイテムの基本サイズをコンテナ幅の 5/6 に設定します。 |
basis-1/12 | flex-basis:8.333333%; | flex アイテムの基本サイズを 8.33% に設定します。 |
basis-2/12 | flex-basis:16.666667%; | flex アイテムの基本サイズを 16.67% に設定します。 |
basis-3/12 | flex-basis:25%; | flex アイテムの基本サイズを 25% に設定します。 |
basis-4/12 | flex-basis:33.333333%; | flex アイテムの基本サイズを 33.33% に設定します。 |
basis-5/12 | flex-basis:41.666667%; | flex アイテムの基本サイズを 41.67% に設定します。 |
basis-6/12 | flex-basis:50%; | flex アイテムの基本サイズを 50% に設定します。 |
basis-7/12 | flex-basis:58.333333%; | flex アイテムの基本サイズを 58.33% に設定します。 |
basis-8/12 | flex-basis:66.666667%; | flex アイテムの基本サイズを 66.67% に設定します。 |
basis-9/12 | flex-basis:75%; | flex アイテムの基本サイズを 75% に設定します。 |
basis-10/12 | flex-basis:83.333333%; | flex アイテムの基本サイズを 83.33% に設定します。 |
basis-11/12 | flex-basis:91.666667%; | flex アイテムの基本サイズを 91.67% に設定します。 |
basis-full | flex-basis:100%; | flex アイテムの基本サイズを 100% に設定します。 |
例
<div class="basis-1/4">01</div>
<div class="basis-1/4">02</div>
<div class="basis-1/2">03</div>
</div>
試してみる »
Flex の方向
flex-direction は主軸の方向(つまり Flex コンテナ内のアイテムが並ぶ方向)を制御します。
Tailwind は方向を設定するための以下のユーティリティクラスを提供しています:
flex-row: デフォルト値で、子アイテムは水平方向に左から右へ並びます。flex-row-reverse: 子アイテムは水平方向に右から左へ並びます。flex-col: 子アイテムは垂直方向に上から下へ並びます。flex-col-reverse: 子アイテムは垂直方向に下から上へ並びます。
例
<div>01</div>
<div>02</div>
<div>03</div>
</div>
<div class="flex flex-row-reverse ...">
<div>01</div>
<div>02</div>
<div>03</div>
</div>
<div class="flex flex-col ...">
<div>01</div>
<div>02</div>
<div>03</div>
</div>
試してみる »
Flex ラップ(Flex Wrap)
デフォルトでは、Flexbox コンテナ内のアイテムは単一の行に配置されます。
それらを折り返したい場合は、flex-wrap ユーティリティクラスを使用できます。
flex-wrap: アイテムの折り返しを許可します。flex-nowrap: アイテムの折り返しを禁止します。flex-wrap-reverse: 逆方向に折り返します。
例
<div>01</div>
<div>02</div>
<div>03</div>
</div>
<div class="flex flex-wrap">
<div>01</div>
<div>02</div>
<div>03</div>
</div>
<div class="flex flex-wrap-reverse">
<div>01</div>
<div>02</div>
<div>03</div>
</div>
試してみる »
Flex アイテムの伸縮性
Flexbox は、利用可能なスペースに応じて要素のサイズを伸縮させることを可能にします。
Tailwind CSS は伸縮を制御するための以下のユーティリティクラスを提供しています:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
flex-1 | flex: 1 1 0%; | flex アイテムに等量の flex 成長と収縮の能力を持たせ、基本サイズを 0% にします。等幅または等しい高さの flex レイアウトを作成するためによく使用されます。 |
flex-auto | flex: 1 1 auto; | flex アイテムに自動の基本サイズと等量の flex 成長・収縮の能力を持たせます。flex アイテムに余分なスペースを埋めさせるためによく使用されます。 |
flex-initial | flex: 0 1 auto; | flex アイテムに自動の基本サイズを持たせ、成長はしないが収縮は可能にします。スペースが不足しない限り、要素の自然なサイズを維持するために使用されます。 |
flex-none | flex: none; | flex アイテムの拡大や縮小を防ぎ、基本サイズを維持します。固定要素のサイズによく使用されます。 |
例
<div class="flex-none w-14 ...">
01
</div>
<div class="flex-initial w-64 ...">
02
</div>
<div class="flex-initial w-32 ...">
03
</div>
</div>
<div class="flex">
<div class="flex-none w-14 ...">
01
</div>
<div class="flex-1 w-64 ...">
02
</div>
<div class="flex-1 w-32 ...">
03
</div>
</div>
試してみる »
flex-grow プロパティ
以下は、flex アイテムの flex-grow プロパティを制御するユーティリティクラスと、対応する CSS プロパティです:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
grow | flex-grow: 1; | flex アイテムが余分なスペースを埋めるために拡大するのを許可します。拡大比率は 1 です。 |
grow-0 | flex-grow: 0; | flex アイテムが余分なスペースを埋めるために拡大するのを防ぎます。拡大比率は 0 です。 |
例
<div class="flex-none w-14 h-14 ...">
01
</div>
<div class="grow h-14 ...">
02
</div>
<div class="flex-none w-14 h-14 ...">
03
</div>
</div>
試してみる »
flex-shrink プロパティ
以下は、flex アイテムの flex-shrink プロパティを制御するユーティリティクラスと、対応する CSS プロパティです:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
shrink | flex-shrink: 1; | flex アイテムが必要に応じて縮小して flex コンテナに収まるようにします。縮小比率は 1 です。 |
shrink-0 | flex-shrink: 0; | flex アイテムが必要に応じて縮小して flex コンテナに収まるのを防ぎます。縮小比率は 0 です。 |
例
<div class="flex-none w-14 h-14 ...">
01
</div>
<div class="shrink w-64 h-14 ...">
02
</div>
<div class="flex-none w-14 h-14 ...">
03
</div>
</div>
試してみる »
並べ替え
以下は、flex アイテムまたは grid アイテムの並び順を制御するユーティリティクラスと、対応する CSS プロパティです:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
order-1 | order: 1; | flex アイテムまたは grid アイテムの並び順を 1 に設定します。 |
order-2 | order: 2; | flex アイテムまたは grid アイテムの並び順を 2 に設定します。 |
order-3 | order: 3; | flex アイテムまたは grid アイテムの並び順を 3 に設定します。 |
order-4 | order: 4; | flex アイテムまたは grid アイテムの並び順を 4 に設定します。 |
order-5 | order: 5; | flex アイテムまたは grid アイテムの並び順を 5 に設定します。 |
order-6 | order: 6; | flex アイテムまたは grid アイテムの並び順を 6 に設定します。 |
order-7 | order: 7; | flex アイテムまたは grid アイテムの並び順を 7 に設定します。 |
order-8 | order: 8; | flex アイテムまたは grid アイテムの並び順を 8 に設定します。 |
order-9 | order: 9; | flex アイテムまたは grid アイテムの並び順を 9 に設定します。 |
order-10 | order: 10; | flex アイテムまたは grid アイテムの並び順を 10 に設定します。 |
order-11 | order: 11; | flex アイテムまたは grid アイテムの並び順を 11 に設定します。 |
order-12 | order: 12; | flex アイテムまたは grid アイテムの並び順を 12 に設定します。 |
order-first | order: -9999; | flex アイテムまたは grid アイテムの並び順を最初に設定します。 |
order-last | order: 9999; | flex アイテムまたは grid アイテムの並び順を最後に設定します。 |
order-none | order: 0; | flex アイテムまたは grid アイテムの並び順をデフォルトの順序に設定します。つまり、その順序を変更しません。 |
例
<div class="order-last">01</div>
<div>02</div>
<div>03</div>
</div>
試してみる »
Grid(グリッド)レイアウト
Grid はもう1つのレイアウトモデルで、行と列で要素を正確に配置でき、複雑なレイアウトを簡単に作成できます。
Tailwind CSS は、グリッドレイアウトを操作するための強力なユーティリティクラスを提供します。
以下は、Tailwind CSS でグリッドレイアウトの列数を指定するためのユーティリティクラスと、対応する CSS プロパティです:
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
grid-cols-1 | grid-template-columns: repeat(1, minmax(0, 1fr)); | 1列のグリッドレイアウトを作成します。 |
grid-cols-2 | grid-template-columns: repeat(2, minmax(0, 1fr)); | 2列のグリッドレイアウトを作成します。 |
grid-cols-3 | grid-template-columns: repeat(3, minmax(0, 1fr)); | 3列のグリッドレイアウトを作成します。 |
grid-cols-4 | grid-template-columns: repeat(4, minmax(0, 1fr)); | 4列のグリッドレイアウトを作成します。 |
grid-cols-5 | grid-template-columns: repeat(5, minmax(0, 1fr)); | 5列のグリッドレイアウトを作成します。 |
grid-cols-6 | grid-template-columns: repeat(6, minmax(0, 1fr)); | 6列のグリッドレイアウトを作成します。 |
grid-cols-7 | grid-template-columns: repeat(7, minmax(0, 1fr)); | 7列のグリッドレイアウトを作成します。 |
grid-cols-8 | grid-template-columns: repeat(8, minmax(0, 1fr)); | 8列のグリッドレイアウトを作成します。 |
grid-cols-9 | grid-template-columns: repeat(9, minmax(0, 1fr)); | 9列のグリッドレイアウトを作成します。 |
grid-cols-10 | grid-template-columns: repeat(10, minmax(0, 1fr)); | 10列のグリッドレイアウトを作成します。 |
grid-cols-11 | grid-template-columns: repeat(11, minmax(0, 1fr)); | 11列のグリッドレイアウトを作成します。 |
grid-cols-12 | grid-template-columns: repeat(12, minmax(0, 1fr)); | 12列のグリッドレイアウトを作成します。 |
grid-cols-none | grid-template-columns: none; | グリッド列を作成しません。子要素はグリッドレイアウトを使用しません。 |
grid-cols-subgrid | grid-template-columns: subgrid; | サブグリッドレイアウトを使用します。子要素は親グリッドの列定義を継承します。 |
grid: Grid レイアウトを有効にします。grid-cols-{n}: グリッドの列数を設定します。gap-{size}: 列と行の間隔を設定します。
Grid の行と列
を使用してgrid-template-columnsとgrid-template-rows列と行の幅と高さを制御します。Tailwind は以下のユーティリティクラスを提供します:
grid-cols-{n}: グリッドの列数を設定します(例:grid-cols-33列を表します)。grid-rows-{n}: グリッドの行数を設定します(例:grid-rows-22行を表します)。col-span-{n}: 1つのアイテムが占める列数を設定します。row-span-{n}: 1つのアイテムが占める行数を設定します。
例
<div>01</div>
<!-- ... -->
<div>05</div>
<div class="grid grid-cols-subgrid gap-4 col-span-3">
<div class="col-start-2">06</div>
</div>
</div>
試してみる »
例
<div class="...">01</div>
<div class="...">02</div>
<div class="...">03</div>
<div class="col-span-2 ...">04</div>
<div class="...">05</div>
<div class="...">06</div>
<div class="col-span-2 ...">07</div>
</div>
試してみる »
例
<div class="row-span-3 ...">01</div>
<div class="col-span-2 ...">02</div>
<div class="row-span-2 col-span-2 ...">03</div>
</div>
試してみる »
Grid アイテムの配置
grid-column と grid-row は、各アイテムのグリッド内の位置を制御します。
次のユーティリティクラスを使用して指定できます:
col-start-{n}: アイテムを n 列目から開始するように設定します。col-end-{n}: アイテムを n 列目で終了するように設定します。row-start-{n}: アイテムを n 行目から開始するように設定します。row-end-{n}: アイテムを n 行目で終了するように設定します。
例
<div class="col-start-2 col-span-4 ...">01</div>
<div class="col-start-1 col-end-3 ...">02</div>
<div class="col-end-7 col-span-2 ...">03</div>
<div class="col-start-1 col-end-7 ...">04</div>
</div>
試してみる »
例
<div class="row-start-2 row-span-2 ...">01</div>
<div class="row-end-3 row-span-2 ...">02</div>
<div class="row-start-1 row-end-4 ...">03</div>
</div>
試してみる »
整列と分布
Flexbox と同様に、Grid にも整列と分布のオプションが用意されています。
justify-content プロパティは、コンテナ内の子要素を主軸(水平方向)に沿って整列させるために使用されます。
| Tailwind クラス名 | CSS プロパティと値 | 説明 |
|---|---|---|
justify-normal | justify-content: normal; | デフォルトの整列方法を使用します。通常は次と同等です:start。 |
justify-start | justify-content: flex-start; | すべての子要素をコンテナの先頭側に移動します。水平レイアウトでは、子要素は左揃えになります。 |
justify-end | justify-content: flex-end; | すべての子要素をコンテナの末尾側に移動します。水平レイアウトでは、子要素は右揃えになります。 |
justify-center | justify-content: center; | すべての子要素を中央揃えにします。 |
justify-between | justify-content: space-between; | 子要素の間のスペースを均等に分配します。両端には空白を残しません。 |
justify-around | justify-content: space-around; | 子要素の間のスペースを均等に分配します。両端には半分のスペースを残します。 |
justify-evenly | justify-content: space-evenly; | 子要素の間のスペースを、両端の空白も含めて完全に均等にします。 |
justify-stretch | justify-content: stretch; | 子要素はコンテナを埋めるように引き伸ばされ、各子要素が同じスペースを占めます。 |
その他の整列設定:
justify-items: グリッドセルの内容の整列方法を制御します。justify-self: 単一のグリッドアイテムの整列方法を制御します。align-items: グリッドセルの垂直方向の整列方法を制御します。align-self: 単一のグリッドアイテムの垂直方向の整列方法を制御します。
例
<div>01</div>
<div>02</div>
<div>03</div>
<div>04</div>
<div>05</div>
<div>06</div>
</div>
試してみる »