
こんにちは!静岡県浜松市でWEBデザイナーをしています小瀧です。
レスポンシブ対応といえば、長い間「画面幅」を基準に考えるのが当たり前でした。
@media (max-width: 768px)
@media (min-width: 1024px)
こうしたブレイクポイントを設定して、レイアウトを切り替える。
しかし実務を重ねるほど、こんな違和感を覚えたことはないでしょうか。
「同じコンポーネントなのに、置く場所によって見た目を変えたい」
「サイドバーに入るときだけ、カードを小さくしたい」
「画面幅は同じなのに、コンテンツ幅が全然違う」
この悩みを解決するために登場したのが、
Container Queries(コンテナクエリ)
です。
Container Queries は、画面サイズではなく
「親要素(コンテナ)のサイズ」
を基準にスタイルを切り替える新しい設計思想です。
この記事では、Container Queries の基本から、従来のメディアクエリとの違い、そして実務でなぜ重要なのかを、Web制作者目線でやさしく解説していきます。
コンポーネント設計を一段階レベルアップさせたい方は、ぜひ最後まで読んでみてください。
Container Queriesとは何か
Container Queries は、
要素が置かれている「親コンテナのサイズ」
に応じてスタイルを切り替える仕組みです。
- 画面幅を見ない
- 親要素の幅を基準にする
- コンポーネント単位で完結する
これにより、コンポーネントが「どこに置かれても適切な見た目」を保てるようになります。
メディアクエリとの根本的な違い
従来のメディアクエリは、常に viewport 基準でした。
- 画面が狭いか広いか
- デバイスサイズ前提の設計
- 配置場所は考慮できない
一方、Container Queries は、
「このコンポーネント自身が、どれくらいの幅をもらっているか」
だけを見ます。
レイアウトではなく、部品が主役
になる考え方です。
基本的な使い方
まず、親要素を「コンテナ」として宣言します。
.card-list {
container-type: inline-size;
}
次に、コンテナの幅に応じてスタイルを切り替えます。
@container (min-width: 400px) {
.card {
display: flex; gap: 16px;
}
}
これだけで、
カードは「親の幅が400px以上のときだけ」
レイアウトが変わります。
なぜコンポーネント設計が楽になるのか
Container Queries を使うと、コンポーネントが自己完結します。
- 配置場所を気にしなくていい
- 再利用しやすい
- CSSの依存関係が減る
これは、
デザインシステムやUIコンポーネント設計
と非常に相性が良いです。
実務でよくある活用シーン
Container Queries が特に効果を発揮するのは、次のような場面です。
- カードUI
- サイドバーとメインで共通の部品
- CMSで配置が変わるパーツ
- ダッシュボードUI
「同じHTMLなのに、置き場所が違うだけ」
というケースほど、真価を発揮します。
注意点と考え方
便利な Container Queries ですが、考え方の切り替えが必要です。
- まずコンテナを意識する
- グローバルなブレイクポイントに頼らない
- コンポーネント単位で完結させる
「ページ設計」から
「部品設計」
への意識転換がポイントです。
実務でのメリット
レイアウト変更に強く、
仕様変更にも柔軟に対応できるCSSは、
長く運用するサイトほど効いてきます。
まとめ
Container Queries は、
「画面サイズ中心」のレスポンシブ設計から、
「コンポーネント中心」の設計へと発想を転換させる技術です。
親要素の幅で見た目を変えるという考え方は、
これからのCSS設計の基盤になっていくでしょう。
今のうちに慣れておくことで、
モダンなUI設計を自然に書けるようになります。











