CSS辞書
比較記事一覧に戻る

@media と @container の違い

TL;DR — ひとことで言うと

ページ全体のレイアウト分岐は@media、置かれた場所の幅で変わるべき「部品」は@container。コンポーネント指向の開発では@containerが主役になりつつあります。

比較表

観点@media@container
判定の基準ビューポート(画面)のサイズや特性指定した祖先コンテナのサイズ
事前準備不要親にcontainer-typeの指定が必須
得意分野ページの骨格、グローバルな出し分けカード等の再利用部品、配置場所依存のUI
専用単位vw / vh などcqw / cqi など
画面幅以外の判定hover可否、prefers-*(ダークモード等)も判定可能サイズとスタイル(style())

使い分けの指針

「このカードはサイドバーに置いても本文に置いても正しく振る舞ってほしい」なら@containerです。逆にダークモード検知やhover可否の判定は@mediaにしかできません。両者は競合ではなく階層の違い——ページは@media、部品は@containerと覚えるのが実用的です。

🤖 AIがよくやる取り違え

AIはコンポーネント単位の分岐まで@mediaで書きがちで、コンテナクエリの提案は明示しないと出にくいです。またcontainer-typeの指定漏れはAI生成コードの定番バグです。

それぞれの詳しい解説