🌊
TailwindCSSについて自分なりのチートシートを作る。#5 Columns編
初めに
TailwindCSSを使うときに、思うように動かせなかったりすることが多いなと個人的に感じていて、なので一度全体的にまとめておこうと思いこの記事を書いています。
第一弾目は、疑似クラスについてまとめました。
第二弾目は、レスポンシブデザインについてまとめました。
第三弾目は、ダークモードの実装についてまとめました。
第四弾目は、コンテナについてまとめました。
第五弾目は、Columnsについてまとめていきたいと思います。
Columnsの基本的な使い方
TailwindCSSでは、columns-{n}
を使うことで、コンテンツを指定した列数に分割することができます。
<div class="columns-2">
<p>1つ目の段落</p>
<p>2つ目の段落</p>
<p>3つ目の段落</p>
</div>
このように、要素が2列に自然に流し込まれます。
最小列幅ベースのレスポンシブColumns
クラス名 | 最小列幅 | 備考 |
---|---|---|
columns-xs |
20rem |
約320px |
columns-sm |
24rem |
約384px |
columns-md |
28rem |
約448px |
columns-lg |
32rem |
約512px |
columns-xl |
36rem |
約576px |
columns-2xl |
42rem |
約672px |
... | ... |
columns-7xl まで存在 |
- columns-smは「各列の最小幅が24rem(約384px)になるように」列数が自動で決まる。
- これにより、画面サイズに応じて最適な列数を維持できるため、特にレスポンシブなカードレイアウトなどに非常に便利です。
break-inside-avoid
について
Columnsを使うと、1つの要素が途中で改行されて別の列に分かれてしまうことがあります。
それを防ぐには、break-inside-avoid
クラスを使います。これで、要素が列の途中で分割されずにまとまって表示されるようになります。
<div class="columns-2">
<div class="break-inside-avoid mb-4 p-4 bg-white shadow">
<h2 class="text-xl font-bold">タイトル</h2>
<p>本文の内容</p>
</div>
</div>
ColumnsとGridの違いを簡単に比較
特徴 | Columns | Grid |
---|---|---|
レイアウト方式 | 自然な縦分割 | 明確に定義された行・列 |
高さの統一 | されない | 自動的に揃う(同じrowにある場合) |
よく使う場面 | テキストやカードの自然な折り返し | 規則的なデザイン・均等なカード配置など |
実際のレイアウト例
<div class="columns-3 gap-4">
<div class="bg-blue-100 p-4">Column 1</div>
<div class="bg-blue-100 p-4">Column 2</div>
<div class="bg-blue-100 p-4">Column 3</div>
<div class="bg-blue-100 p-4">Column 4</div>
<div class="bg-blue-100 p-4">Column 5</div>
<div class="bg-blue-100 p-4">Column 6</div>
</div>
実行結果
break-before-columnについて
ある要素の直前で新しい列を開始させたいときに使用します。
<div class="columns-2 gap-6">
<p>これは記事の最初の段落です。読者にとって興味深い導入文がここに書かれます。</p>
<p>2つ目の段落です。ここでは話の背景や補足情報が説明されます。</p>
<!-- ↓ここで新しいカラムに切り替わる -->
<h2 class="break-before-column text-xl font-bold text-blue-700">セクション2:次の話題へ</h2>
<p>この段落はセクション2の内容です。新しい話題に入るので、新しいカラムから始めると読みやすくなります。</p>
</div>
実行結果
break-after-columnについて
指定した要素のあとで、現在のカラムを強制的に終了させ、新しいカラムに切り替えます。例えば、「この項目はここで終わり!次の内容は新しいカラムで見せたい」という時に便利です。
<div class="columns-2 gap-4">
<!-- グループ1 -->
<div class="break-inside-avoid p-4 bg-green-100">グループ1 - カード1</div>
<div class="break-inside-avoid p-4 bg-green-100">グループ1 - カード2</div>
<!-- ↓ ここで次のカラムに切り替える -->
<div class="break-after-column"></div>
<!-- グループ2 -->
<div class="break-inside-avoid p-4 bg-blue-100">グループ2 - カード1</div>
<div class="break-inside-avoid p-4 bg-blue-100">グループ2 - カード2</div>
</div>
解説
- columns-2 によって2カラムレイアウトになっています。
-
break-after-column
が指定された空の div によって、そこまでの要素で1つ目のカラムを終わらせて、以降の要素が2つ目のカラムの先頭から始まるようになります。 -
break-inside-avoid
を使うことで、各カードの内容が途中でカラムをまたいで分断されるのを防いでいます。
実行結果
Discussion