株式会社オートプロジェクト

Columnコラム
  • TOP
  • コラム一覧
  • CSS|[レスポンシブ]レイアウト変更に今後使えるコンテナクエリ(@container)が便利
2023年7月6日
CSS|[レスポンシブ]レイアウト変更に今後使えるコンテナクエリ(@container)が便利

レスポンシブ対応としてよくメディアクエリが使用されますが、コンテナクエリを利用することで、メディアクエリよりも柔軟なレイアウトが可能となります。

コンテナクエリは、今年(2023年)2月に全ブラウザ対応になりました。

コンテナクエリとは

親コンテナを基準に、スタイルをあてることができる新機能です。

メディアクエリとコンテナクエリの違いは以下となります。

このように、メディアクエリは画面幅が基準となりますが、コンテナクエリは任意の要素を基準にできます。

使用方法

コンテナクエリを使用するために必要な手順は次のとおりです。

  1. 横幅を基準にしたい要素にcontainer-typeプロパティとcontainer-nameプロパティを指定する
  2. 基準にした要素の幅が狭くなった際に、変更する要素をコンテナクエリの中に記述し、スタイルをあてる[メディアクエリと同じ書き方]

コンテナクエリに必要なプロパティ

主に使用するプロパティと値

基準にしたい要素に指定
●プロパティ:container-type
値:「normal」「size」「inline-size」
上記3つの値がある
主にinline-sizeは、指定する要素の横幅を基準とするのでよく使用します。
●プロパティ:container-name
値:対象の要素にスタイルを適応させるために、コンテナクエリの任意の名前を指定します。

書き方

●基準にする要素の書き方

.box {;/*基準にしたい要素*/
container-type: inline-size;
container-name: box;/*任意の名前をつける*/
}

※container-nameプロパティは、必要ない場合もあります。

●上記はショートハンドでも書けます。

container:box / inline-size;

●コンテナクエリの書き方

@container box (min-width: 620px) {
.sample-box {
background-color: pink
 }
}

まとめると、以下になります。

.box {;/*基準にしたい要素*/
container-type: inline-size;
container-name: box;/*任意の名前をつける*/
}
@container box (min-width: 620px) {/*変更したい要素をコンテナクエリの中に記述*/
.sample-box {
background-color:pink
 }
}

次回は、コンテナクエリの簡単なデモで仕様を紹介します。