テック技報最新号へ →
デザイン

同じ部品を置き場所によって組み替えたいときは、画面幅ではなく親の幅を基準にする CSS の @container を使う

メディアクエリは画面幅しか見ないが、コンテナクエリなら、同じカードがサイドバーでは縦、メインでは横、のように親の幅で切り替わる。

@wokobo_net · 投稿 2026-10-16
#CSS#コンテナクエリ#レスポンシブ#コンポーネント

どんな問題を解決するか / いつ使うか

カードなどの部品を、広いメイン領域と狭いサイドバーの両方で使うとき。画面幅で分岐すると、同じ画面幅でも置き場所によって崩れる。

やり方

css
/* 1. 基準にしたい親をコンテナにする */
.card-wrap {
  container-type: inline-size;
  container-name: card;          /* 名前は省略可 */
}

/* 2. 既定は縦並び */
.card { display: grid; gap: 12px; }

/* 3. 親が 480px 以上なら横並び */
@container card (min-width: 480px) {
  .card { grid-template-columns: 160px 1fr; }
}
  • 親の幅に応じた単位 cqi(コンテナ幅の1%)も使える。例:font-size: clamp(1rem, 4cqi, 1.5rem);

注意点

出典

  • 投稿者: @wokobo_net
  • 投稿: @wokobo_net · 2026-10-15
  • 収集日: 2026-10-16(JST、10/15・10/16分の巡回をまとめて実施)
X の元の投稿を開く