
およそ10年間、レスポンシブウェブデザインはメディアクエリ(@media)のみに依存してきました。当時としては画期的でしたが、コンポーネント駆動型アーキテクチャ(React、Vue、Web Components)の時代において、メディアクエリには根本的な欠陥があります。それは、ビューポートのことしか知らないという点です。
再利用可能な<Card>コンポーネントを構築する際、それが広いメインコンテンツ領域に配置されても、狭いサイドバーに押し込められても、見栄えが良いようにしたいものです。メディアクエリを使用すると、カードは実際の親コンテナのサイズではなく、ブラウザウィンドウのサイズにしか反応できません。このため、開発者は配置に基づいてスタイルを手動で調整するために、複雑なCSSアーキテクチャ(BEMモディファイア:.card--sidebarなど)を記述せざるを得ませんでした。
そこで登場するのがCSSコンテナクエリ(@container)です。2026年には、すべてのモダンなレンダリングエンジンでブラウザのユニバーサルサポートが実現し、コンテナクエリによってコンポーネントは親コンテナのサイズを直接クエリし、それに応じて自身を調整できるようになります。
Interactive frosted glass generator with live Tailwind export
Design modern frosted glass UI with live backdrop-filter sliders, blur, opacity, borders, and copy ready-to-use Tailwind CSS or pure CSS snippets.
下のコンテナ幅スライダーをドラッグしてみてください。親コンテナが420pxを超えるとすぐに、カードが積み重ねられた垂直レイアウトから水平メディアレイアウトに自動的に変化することに注目してください。これは、実際の画面幅やブラウザ幅とは完全に独立しています!
実装には、次の2つの簡単なステップが含まれます。
container-typeを介して要素をコンテナとして定義します。@containerを介して、子要素がそのコンテナをクエリできるようにします。コンテインメント境界を確立するには、ラッパー要素にcontainer-typeプロパティを適用します。
.card-grid {
/* This element is now a queryable container */
container-type: inline-size;
container-name: card-wrapper; /* Optional name identifier */
}
inline-size:書き込みモード軸に沿った幅をクエリします(最も一般的)。size:幅と高さの両方の寸法をクエリします。normal:デフォルトの状態(コンテナではない)。ショートハンドも使用できます:container: card-wrapper / inline-size;
cqi、cqw、cqh)ビューポート単位がvwとvhを提供したように、コンテナクエリはコンテナの計算されたボックスサイズに直接関連付けられた相対単位を導入します。
cqi:クエリコンテナのインラインサイズ(通常は幅)の1%。cqb:クエリコンテナのブロックサイズ(通常は高さ)の1%。cqmin / cqmax:cqiとcqbの小さい方または大きい方の値。これらの単位は、あらゆるサイドバーやウィジェット内でスムーズにスケーリングする流動的なタイポグラフィと間隔を可能にします。
次の3つの異なる場所に配置したいニュースレター登録ウィジェットを想像してみてください。
メディアクエリを使用すると、.newsletter--sidebarや.newsletter--footerのような個別のクラスが必要になります。コンテナクエリを使用すると、コンポーネントは独自のレイアウト遷移を内部で処理します。
開発チームは、大規模なeコマースサイトをコンポーネント駆動型アーキテクチャに移行しています。彼らは、親コンテナの利用可能な幅に基づいて表示が異なる(例:積み重ねレイアウト vs. 水平レイアウト)必要がある`ProductCard`コンポーネントを持っています。この幅は、サイドバー、メインの製品グリッド、またはカルーセル内のどこにあるかによって大きく異なります。2026年以前に、`ProductCard`コンポーネントのこのレスポンシブな動作を実現するための最も一般的で、しかし欠陥のあるアプローチは何でしたか、そしてその主な制限は何でしたか?
はい。CSSコンテナクエリ(@container、container-type、およびcqi単位)は、2023年初頭以降、Chrome、Edge、Safari、Firefox、およびモバイルブラウザ全体で普遍的なベースラインサポートがあります。
いいえ。最適なアーキテクチャは、マクロページレイアウト(ルートグリッド、ページマージン、グローバルナビゲーションバー)には@mediaを、マイクロコンポーネントレイアウト(カード、リスト、モーダル、ウィジェット)には@containerを使用します。
コンテナクエリは、FlexboxとCSS Grid以来、CSSにおける最大のパラダイムシフトを表しています。レスポンシブロジックをグローバルビューポートからローカルコンポーネント境界に移行することで、真にモジュール化されたプラグアンドプレイのUIデザインシステムを構築できます。
AI CLIログの整形、Cron式の作成、JWTの解析、chmod権限の計算をオフラインで実行。

勘に頼るのはやめましょう。CSSGridとFlexboxをライブインタラクティブデモ、意思決定ツリー、ブラウザで編集可能な実世界のレイアウトパターンで比較し、その違いを視覚的に理解しましょう。
続きを読む
曇りガラスUIは至る所にあります。backdrop-filterがGPU compositingをどのように活用するのか、モバイルSafariの癖を回避する方法、そしてアクセシブルなTailwindガラスデザインを作成する方法を学びましょう。
続きを読む
TailwindCSSv4は、パフォーマンスの大幅な向上、新しいエンジン、ゼロコンフィギュレーション設定をもたらします。新機能を探り、既存プロジェクトの移行方法を学びましょう。
続きを読む