Tailwind CSS 4.0で導入されたコンテナクエリの使い方


こんにちは、森田です。
現在α版であるTailwind CSS 4.0でデフォルトで導入されるコンテナクエリ(@container)についてご紹介します。
この機能により、従来のメディアクエリに加えて、コンテナのサイズに基づいてスタイルを切り替えることがプラグインの追加などが無しで可能になりました。

コンテナクエリについては以前の記事をご確認ください。

Tailwind CSS コンテナクエリ(@container)の使い方

判定の基準となる要素(コンテナ)にクラス @container を指定し、スタイルを変更する要素にサイズ:スタイルを指定します。

<div class="@container w-[500px] h-[500px] bg-gray-300">
  <div class="w-[300px] h-[300px] bg-blue-300 @[400px]:bg-red-300 transition-all"></div>
</div>

サンプルコートでは 400px とサイズを指定していますが、 @md:bg-red-300 のような指定も可能です。

動作サンプル

400pxを基準に背景色が変わっているのがわかります。

Tailwind Playでも動作確認できます。
https://play.tailwindcss.com/0gSKePpFh4

Tailwind CSS 3.2以降で利用可能

Tailwind CSS 4.0では標準で使うことができますが、Tailwind CSS 3.2以降でも、追加のパッケージをインストールすることでこの機能を利用できます。

$ npm install @tailwindcss/container-queries
// tailwind.config.js
module.exports = {
  plugins: [
    require('@tailwindcss/container-queries'),
    // ...
  ],
}

CSSの出力を確認

@containercontainer-type: inline-size; にCSSが出力されます。
@[400px]:bg-red-300 がどのようになるか確認してみましょう。

<div class="w-[300px] h-[300px] bg-blue-300 @[400px]:bg-red-300 transition-all"></div>
/* @[400px]:bg-red-300 */

@container (width >= 400px) {
  background-color: var(--color-red-300, #fca5a5);
}

コンテナが400px以上の場合にスタイルを適用するCSSが出力されています。

Tailwind CSS 4.0 から使える新しいバリアント @min- と @max-

Tailwind CSS 4.0 より使える新しいバリアント「@min-」と「@max-」が追加されています。

@min- バリアント

@max- バリアントはモバイルファーストの場合に使用します。
@のみの指定と同じ動きをします。

<div class="w-[300px] h-[300px] bg-blue-300 @min-[400px]:bg-red-300 transition-all"></div>

CSSを確認してみましょう。

/* @min-[400px]:bg-red-300 */

@container (width >= 400px) {
  background-color: var(--color-red-300, #fca5a5);
}

@min- バリアントを使うと コンテナが400px以上の場合に背景が赤になります。

@max- バリアント

@max- バリアントはデスクトップファーストの場合に使用します。

<div class="w-[300px] h-[300px] bg-blue-300 @max-[400px]:bg-red-300 transition-all"></div>

CSSを確認してみましょう。

/* @max-[400px]:bg-red-300 */

@container (width < 400px) {
  background-color: var(--color-red-300, #fca5a5);
}

@max- バリアントを使うと コンテナが400px未満の場合に背景が赤になります。

まとめ

Tailwind CSS 4.0の正式リリースが待ち遠しいですね。
最近は Tailwind CSS を導入してコンポーネント開発することがほとんどですので、積極的に採用していきたいです。

Gaji-Labo は Next.js 開発の実績と知見があります

フロントエンド開発の専門家である私たちが御社の開発チームに入ることで、バックエンドも含めた全体の開発効率が上がります。

「既存のサイトを Next.js に移行したい」
「人手が足りず信頼できるエンジニアを探している」
「自分たちで手を付けてみたがいまいち上手くいかない」

フロントエンド開発に関わるお困りごとがあれば、まずは一度お気軽に Gaji-Labo にご相談ください。

オンラインでのヒアリングとフルリモートでのプロセス支援にも対応しています。

フロントエンドの相談をする!

投稿者 Morita Sou

フロントエンドグループチームマネージャー。
適切な技術提案やプロジェクトを円滑に進めるコミュニケーションを心掛けています。
CMS構築や開発環境の構築・最適化などを得意としています。チームビルティングと採用と開発環境を快適にすることにいつも燃えています。