コンテナクエリ対応 自己レスポンシブカード

レイアウト Medium #css #container-query #responsive #modern

@container クエリで「親の幅」に応じてレイアウトが切り替わるカード。メディアクエリと異なり、コンポーネント単位で再利用可能な真のレスポンシブ実装。

▶ プレビュー

解説

このカードは、画面全体の幅ではなく自分が置かれた容器の幅に合わせてレイアウトを変える「コンテナクエリ」の実例です。親要素に container-type:inline-size を指定し、カード側で @container (min-width:480px) と書くことで、容器が 480px 以上のときだけ画像とテキストを横並びにし、狭いときは縦積みに戻します。同じカード部品を、サイドバーの細い枠でもメイン領域の広い枠でも、それぞれ適切な形で表示できるのがポイントです。

記事一覧やカード型のダッシュボード、再利用するコンポーネントをいろいろな幅のスロットに差し込むデザインシステムで特に効きます。従来のメディアクエリは画面幅で一律に切り替わるため、置き場所ごとに別の調整が要りましたが、コンテナクエリなら部品が自分で最適な見た目を選びます。

カスタマイズと注意点

  • 横並びに切り替わる幅を変えるには @containermin-width の値を編集します。
  • 横並び時の画像幅やテキストの余白も @container ブロック内で個別に調整できます。
  • コンテナクエリを効かせるには、必ず親に container-type を付ける必要があります。これを忘れると切り替えが起きません。対応は比較的新しいブラウザが中心なので、未対応環境では基本の縦積みで表示されるよう設計しておくと安心です。

よくある質問

メディアクエリと何が違うのですか?
メディアクエリは画面(ビューポート)の幅を見ますが、コンテナクエリは要素が置かれた容器の幅を見ます。そのため同じカードでも、狭いサイドバーでは縦積み、広い本文では横並び、と置き場所ごとに自動で最適化されます。
切り替わる幅を変えるにはどこを直しますか?
CSS の @container (min-width:480px) という記述の数値を変更します。たとえば 360px にすればより早く横並びに切り替わります。あわせて親要素の container-type:inline-size が付いていることを必ず確認してください。
inspired by 2026 modern CSS / Web APIs / 追加日:2026-05-13
← すべてのスニペットへ戻る