本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

コンテナクエリが効かない — 画面幅の代わりに書いていないか

目次 · 5項目

サイドバーに置いたお知らせカードが、幅の狭いところで横並びのまま崩れる。メディアクエリで直そうとすると、同じ画面幅でもメインカラムでは正しく出ているので、分岐が増えていく。この症状にコンテナクエリを入れても、「書いたのに何も変わらない」で止まることがあります。

対応ブラウザは揃っているのに、あまり使われず、誤解もされやすい、という指摘が9月にSmashing Magazineで出ていました。誤用の原因として挙げられていたのは、メディアクエリと見た目がそっくりなことです。

同じ形をしているが、測っているものが違う

@media (width > 40rem) と @container (width > 40rem) は、書き方がほとんど同じです。この見た目の近さが、そのまま誤用につながります。

メディアクエリが見ているのはビューポート、つまり画面そのものです。コンテナクエリが見ているのは、その要素を包んでいる祖先要素の寸法です。同じカードでも、メインカラムに置けば広く、サイドバーに置けば狭い。その置き場所に応じて切り替えるための仕組みです。

したがって、画面幅で分岐したい箇所をコンテナクエリに置き換えても、得るものはありません。レイアウト全体の構成、つまりサイドバーを出すか出さないかのような判断は、これまでどおりメディアクエリの仕事です。

分岐したいもの使うもの
ページ全体の骨格(段組み、サイドバーの有無)メディアクエリ
部品の中身(カードの縦横、要素の省略)コンテナクエリ
印刷・配色の好み・動きの抑制メディアクエリ(機能ごとの条件)

効かないときに見る順番

@container を書いても何も起きない場合、原因はほぼ決まった場所にあります。

  1. 包んでいる要素に container-type が指定されているか。inline-size を親側に置かないと、子の @container は参照先を持ちません
  2. 参照しているのが意図した祖先か。名前(container-name)で指定しない場合、container-type を持つ祖先のうち、いちばん近いものが選ばれます。途中に別のコンテナがあると、そちらを見ます
  3. 要素が自分自身を参照していないか。コンテナ自身のサイズを、そのコンテナのクエリで変えることはできません。幅が変わればクエリの結果が変わり、また幅が変わる、という循環になるためです

container-type を持つ最も近い祖先が参照先になることを示す編集部の概念図。実製品画面や検証結果ではない

図で見るべきは2番目の項目です。container-type を持つ要素が入れ子になっている場合、子が参照するのは外側ではなく、いちばん近い内側のほうです。意図した幅で分岐しないときは、自分と祖先の間に別のコンテナが挟まっていないかを先に確認してください。特定の祖先を基準にしたい場合は、その祖先に container-name で名前を付け、@container 側でその名前を指定します。

3つ目は理解の入口でつまずきやすい点です。カードの幅そのものを @container で変えるのではなく、カードを包む箱を基準にして、中身の並びを変える、と考えると設計が素直になります。

置き換える価値があるのはどこか

既存サイトのCSSを全部書き換える話ではありません。効くのは、同じ部品を複数の場所に置いている箇所です。

長く運用されてきたサイトのCSSでは、card--sidebar card--narrow card--footer のように、置き場所ごとに派生クラスが増えていることがあります。中には「幅が違う」だけの理由で生まれたものもあります。そうした派生をコンテナクエリに寄せると、部品が1つに戻ります。

逆に、1か所にしか置かれない部品、そもそも幅が変わらない部品には入れる理由がありません。コンテナを増やすほど、どの祖先を見ているかを追う手間が増えます。

部品として作り直す側の組み方はコンテナクエリで置き場所に左右されないUIを作るに整理しています。どの機能を前提にしてよいかの判断はBaselineで対応範囲を決める、JavaScriptで補っていた処理をCSSへ戻す流れは配信するJavaScriptを減らすが参考になります。

古いブラウザをどう扱うか

コンテナクエリに対応していない環境では、@container の中身が丸ごと無視されます。この性質は、書き方の順序で扱えます。

狭いほうの見た目を通常のCSSとして書き、広いときの変化を @container の中に入れておけば、未対応の環境では狭いほうの見た目で表示されます。崩れるのではなく、変化しないだけになります。逆に広いほうを既定にすると、未対応環境で狭い場所に広いレイアウトが出て崩れます。

手を付ける場所の選び方

改修の入口は、派生クラスがいちばん多い部品です。そのクラスがなぜ分かれているかを1つずつ見て、「幅が理由」のものだけを数えてください。編集部の目安では、その数が3つ以上あれば、コンテナクエリに寄せる価値があります。1つか2つなら、今のままで構いません。

2026年9月24日に、Smashing Magazineの記事とMDNの解説をWeb検索で確認しました。本記事で扱ったCSSの挙動について、ブラウザごとの実機確認や既存サイトへの適用は行っていません。仕様の整理と改修の判断材料です。

既存サイトのCSS改修や、部品の作り直しの相談は、グリームハブへご相談ください。

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

Webサイトで、実現したいことから。

使う人の目的、必要な機能、更新の体制を整理し、制作・改善で最初に取り組むことを考えます。

  • サイトの目的
  • 機能と使いやすさ
  • 公開後の運用
Web制作・改善を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る・Web制作ガイドを読む
無料ダウンロード

Web制作 費用・発注・集客 完全ガイド【2026年版】

費用相場・制作会社の選び方・集客戦略をPDFにまとめました。

The PDF and newsletter emails are currently in Japanese.

メルマガにも登録されます。いつでも解除可能です。