広告スペース(バナー)
🎨HTML & CSS レッスン
HTMLの基礎7
CSSレイアウトの基本6
インタラクションとアクセシビリティ5
CSSの表現力を高める6
テーブルと詳細度・図形5
モダンCSSレイアウト6
画像とビジュアル表現の応用6
最新CSS機能と仕上げ8
レッスン 43 / 50

コンテナクエリで部品ごとにレイアウトを変える

このレッスンでは、コンテナクエリを使った部品単位でのレイアウト切り替えを学び、再利用しやすいコンポーネント設計ができるようになることを目標にします。「CSS コンテナクエリ 使い方」で調べている方向けです。

@container(コンテナクエリ)を使うと、画面全体の幅ではなく「その部品(コンテナ)自身の幅」に応じてスタイルを変えられます。同じカード部品を、狭い場所でも広い場所でも見た目良く配置したいときに便利です。

サンプルコードでは、.wrappercontainer-type: inline-size;を指定してコンテナとして登録し、@container (min-width: 400px)の中でカードのレイアウトを縦並びから横並びに切り替えています。.wrapperのwidthの値を変えると、切り替わるタイミングが変化することも確認してみましょう。

初心者がよくつまずくのが、コンテナクエリを使うには、まず親要素にcontainer-typeを指定してコンテナとして登録する必要がある点です。この指定を忘れると、@containerのルールが正しく動作しません。

従来のメディアクエリは画面全体の幅しか見られませんでしたが、コンテナクエリは部品単位で判定できるため、同じ部品を色々な場所で再利用しやすくなります。比較的新しいCSSの機能として注目されています。

HTML & CSS
OUTPUT / 実行結果

💡 プレビューはこのページ内だけで動作し、外部には送信されません。

🎯
ここまでできればゴール達成!
画面幅ではなく、部品自体の幅に応じてレイアウトを変えられるようになります。
広告スペース(バナー)
広告スペース(記事内)