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日の時点で、ChromeEdgeSafari の最新バージョンでコンテナクエリが使えるようになっています。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 などのコンテナクエリ未対応のブラウザで表示した場合、意図した結果には当然なっていませんが、破綻していません。むしろ今回の場合、見やすくなっています。

サイト運営者プロフィール

対馬 俊彦
対馬 俊彦魚沼情報サービス・ベクトル公式テクニカルパートナー
【日本全国対応】WordPress のサイト制作、設定、カスタマイズ、トラブルでお悩み、お困りの方、ベクトル公式テクニカルパートナーがお手伝いいたします。

Lightning / VK Blocks / VK Filter Search のサポート、カスタマイズを得意としています。

遠方からのご依頼の場合、打ち合わせ・サポートを Zoom や電子メール・電話などを併用して行わせていただきます。

オンラインレッスン形式でのホームページ制作サポートも行っています。お客様ご自身でホームページを制作・運用する上でうまくいかない部分をサポートいたします。設定やカスタマイズを手伝ってもらいたい、同時に便利な使い方や設定方法、カスタマイズのやり方も知ることができたら...という方にご好評いただいています。

デザイナー様、制作業者様のサイト制作のお手伝いも数多く行っています。難しい部分のコーディング ( PHP / CSS / jQuery ) をやってほしい、いま人手が足りない等、お仕事の依頼をお待ちしています。

ご要望をうかがった上で費用見積り(無料)を提示させていただきますので、お気軽にお問い合わせください。

メールでのお問い合わせはこちら

Lightning テーマ使用

中小企業様、個人事業主様向け

最適なホームページ

を制作いたします

制作費用クオリティを落とさずに



価格を抑えたサイトを制作します
必要十分お問い合わせフォーム、新着情報など



必要なものが最初から揃っています
サポート1年間のサポートがついて安心
初めてでもホームページを活用できます