CSS のコンテナクエリがそろそろ実用に近づいてきた
こんにちは、魚沼情報サービスの対馬です。今日は最新の CSS 事情のことを書いてみます。
ウェブサイトのレスポンシブ対応のためにメディアクエリがほとんどのサイトで使われていますが、使う場面によってはメディアクエリには使いづらい点があります。
メディアクエリではブレイクポイント(デザインが切り替わる基準点)をデバイスの画面幅で決めています。
このブレイクポイントのルールって、使いづらいときがあるんです。
メディアクエリのブレイクポイントが使いづらい場面
具体的な例として、プラグイン VK All in One Expansion Unit を使って配置したお問い合わせブロックを見てみましょう。
ブロックを単体で配置
まず、お問い合わせブロックを単体で配置すると ↓ こうなります。
お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせパソコンでウィンドウサイズを変更して確認すると、1200px よりも小さくなったときに ↓ このように電話番号とお問い合わせボタンが縦に並ぶレイアウトになります。これがデバイスの画面幅に基づいたレスポンシブ動作です。
お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせブロックをカラム内に配置すると…
お問い合わせブロックをカラム内に配置すると、↓ こうなります。ブレイクポイントの基準である画面幅は広いのですが、カラムの幅が狭いので、このようなかっこ悪いレイアウトになっています。

お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせブロックに max-width: 500px を指定
お問い合わせブロックが広すぎるので、ブロックに max-width: 550px;
を指定しました。この場合もカラム内に配置したときのようにかっこ悪くなってしまいました。
お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせこういうかっこ悪さを想定して、お問い合わせブロックには「電話・メールフォームを縦に設置」というありがたい機能があります。さすが、ベクトルさんですね。
しかし…ここでは、このありがたい機能についてはひとまず忘れて 😅 先に進みましょう。
親要素の幅に基づいてブレイクポイントを決めるコンテナクエリ
ブレイクポイントをデバイスの画面幅ではなく親要素の幅に基づいて決めることができれば、上記のカッコ悪さの問題が解決できます。
また、これができれば、WordPress サイトでレイアウトが
* 1カラムの場合
* 2カラム(サイドバーあり)の場合
の両方に対応した CSS を書くことができるようになります。
それができるのが、コンテナクエリという CSS の新機能です。
この記事を書いている2022年10月9日の時点で、Chrome・Edge・Safari の最新バージョンでコンテナクエリが使えるようになっています。Firefox ではまだ使えません。
Firefox 以外の主要ブラウザが対応した現在、コンテナクエリがいよいよ実用に近づいてきたと思いますし、積極的に使い始めてもよいのではないかと私は思っています。
2023.2.17 追記
今週リリースされた Firefox 110 がコンテナクエリに対応しました。これで主要ブラウザすべてでコンテナクエリが使えるようになりました。
コンテナクエリの CSS
ここから下にあるお問い合わせブロックの 追加 CSS クラス には veu_contact_container
を指定してあり、以下のコンテナクエリ CSS を記述してあります。親要素の幅 550px
がブレイクポイントになっている点に注目してください。
.veu_contact_container.veu_contact-layout-horizontal .contact_txt {
float: none;
text-align: center;
margin-bottom: 1.2em;
}
.veu_contact_container.veu_contact .contact_bt {
float: none;
padding: .5rem 1.5rem .6rem;
}
.veu_contact_container .contact_frame {
container-type: inline-size;
container-name: veu_contact_container_frame;
}
@container veu_contact_container_frame (min-width: 550px) {
.veu_contact_container.veu_contact-layout-horizontal .contact_txt {
float: left;
text-align: left;
margin-bottom: 0;
}
.veu_contact_container.veu_contact-layout-horizontal .contact_bt {
float: right;
padding: .7em 1.5em;
}
}
ブロックを単体で配置
デフォルトの画面幅 1200px をブレイクポイントとしている場合と比べると、こっちの方がしっくりくるのではないかと…。
お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせ下記の2つは、かっこ悪さがなくなって、いいかんじです。
ブロックをカラム内に配置

お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせブロックに max-width: 500px を指定
お気軽にお問い合わせください。025-779-28439:00 – 17:00 [ 土日・祝日除く ]
お問い合わせFirefox などのコンテナクエリ未対応のブラウザで表示した場合、意図した結果には当然なっていませんが、破綻していません。むしろ今回の場合、見やすくなっています。
サイト運営者プロフィール

- 魚沼情報サービス (新潟県南魚沼市)
-
新潟県南魚沼市・魚沼市を中心に、地域の皆様がパソコンやインターネットを有効活用して業務効率化・課題解決を図るお手伝いを1999年から行ってまいりました。
WordPress を使用したサイト制作・カスタマイズを全国どこからでも承ります。ベクトルが開発している WordPress テーマ「Lightning」「Katawara」および同社のプラグイン「VK Blocks」「VK Filter Search」のカスタマイズを得意としています。遠方からのご依頼の場合、打ち合わせ・サポートを Zoom や電子メール・電話などを併用して行わせていただきます。
オンラインレッスン形式でのホームページ制作サポートも行っています。お客様ご自身でホームページを開設・運用する上で、うまくいかない部分をサポートいたします。設定やカスタマイズを手伝ってもらいたい、同時に便利な使い方や設定方法、カスタマイズのやり方も知ることができたら...という方にご好評いただいています。
* ドメインやサーバーの契約・申込み
* WordPress やテーマ、プラグインのインストール
* ドメインの移管・移転
* 日常の更新作業
なども含めて、サイトの制作・運用全般をお手伝いできます。
制作業者様のサイト制作のお手伝いも数多く行っております。いま人手が足りない、ちょっとここだけコーディングを頼みたい、等々… お仕事の依頼をお待ちしています。
ご要望をうかがった上で費用見積り(無料)を提示させていただきますので、お気軽にお問い合わせください。
» ご相談・お問い合わせはこちらからどうぞ
最新の投稿
WordPress2023年9月29日ノーコードでクエリーループに新着(NEW)バッジを表示できるようになった
HTML/CSS2023年9月28日CSS の clip-path で画像をクリップしてみた
ホームページ制作事例2023年9月8日ホームページ制作事例「有限会社城内農産」
その他2023年8月24日ユーザー定義関数の作り方比較 ~ LAMBDA 関数 vs VBA
WordPress サイト制作・カスタマイズ・サポートを承ります
オンラインレッスン形式でのホームページ制作サポートも行っています。お客様ご自身でホームページを開設・運用する上で、うまくいかない部分をサポートいたします。設定やカスタマイズを手伝ってもらいたい、同時に便利な使い方や設定方法、カスタマイズのやり方も知ることができたら...という方にご好評いただいています。
* ドメインやサーバーの契約・申込み
* WordPress やテーマ、プラグインのインストール
* アクションフック・フィルターフック・jQuery・CSS によるカスタマイズ
* ドメインの移管・移転
* 日常の更新作業
なども含めて、サイトの制作・運用全般をお手伝いできます。
* 近くに頼りになるところがない
* わからないところを教えてほしい
* 専門家にサイト制作を手伝ってもらいたい
という方はぜひお気軽にご相談ください。
また、制作業者様のサイト制作のお手伝いも数多く行っております。いま人手が足りない、ちょっとここだけコーディングを頼みたい、等々… お仕事の依頼をお待ちしています。
ご要望をうかがった上で費用見積り(無料)を提示させていただきます。