並べる・揃える
この場面の困り事と、そのまま使えるコード。全16件。 足りなければ、行末のページへ進む。
このページの中だけを絞ります。ページは移りません。
画面が散らかって見える
近接から直す。関係のあるものを寄せ、無いもののあいだを空ける。線や枠を足すのは最後。デザインの4原則
.section { margin-block: var(--space-8); }
.section > * + * { margin-block-start: var(--space-4); }どこから読めばいいか分からない
大きさ・太さ・色・位置・余白のうち、2つだけで差をつける。全部を変えると差が消える。視覚階層
h1 { font-size: var(--text-2xl); font-weight: 700; }
p.lead { font-size: var(--text-lg); color: var(--color-text-muted); }全体がなんとなく落ち着かない
揃っていない端を探す。左端が1本の線に乗っているか、余白が同じ刻みかを見る。構図とバランス
.page {
max-inline-size: var(--page);
margin-inline: auto;
padding-inline: var(--gutter);
}中央揃えにすると締まらない
左揃えに戻す。中央揃えは端が揃わないので、要素が増えるほど落ち着かなくなる。構図とバランス
.content { text-align: start; max-inline-size: var(--page); margin-inline: auto; }要素をいくつ並べるか迷う
同じ重さのものを4つ以上並べると、どれも見られなくなる。優先順位を付けて差をつける。視覚階層
主役1 + 副2まで。4つ以上は優先順位で差をつける
囲み枠を足しても整理された感じがしない
枠は最後の手段。余白で分けられていないものを、枠で分けようとしている。デザインの4原則
.group { display: flex; flex-direction: column; gap: var(--space-4); }同じ形の繰り返しが単調に見える
繰り返しは統一の手段で、単調さは別の問題。大きさか位置に1か所だけ変化を入れる。デザインの4原則
.cards > :first-child { grid-column: span 2; }
.cards { display: grid; gap: var(--space-5); grid-template-columns: repeat(3, 1fr); }要素が離れているのに関係があると伝えたい
同じ色・同じ形・同じ枠で囲む。距離で結べないなら、見た目の共通点で結ぶ。ゲシュタルト
.related { color: var(--color-accent-text); border: 1px solid var(--color-border); }縦の並びと横の並びのどちらにするか
順序があるなら縦、比較させるなら横。読む向きと、比べる向きは違う。構図のパターン
.steps { display: flex; flex-direction: column; gap: var(--space-5); }
.compare { display: flex; flex-direction: row; gap: var(--space-5); }グリッドを何列にするか
12列が扱いやすい。2・3・4・6に割り切れるので、大半の分割が作れる。グリッド
.grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: var(--space-6);
}グリッドに乗せたのに窮屈に見える
写真とテキストの配分が決まらない
先に版面を決め、写真を断ち落とすかどうかを決める。半々にすると、どちらも主役にならない。構図とバランス
.split {
display: grid;
grid-template-columns: 2fr 1fr;
gap: var(--space-8);
}一覧のカードの高さが揃わない
Gridのサブグリッドで、見出し・本文・ボタンの行を列をまたいで揃える。レイアウトの実装
Grid で stretch。カード内は見出し・本文・ボタンの行を揃える。
HTML(見本の骨組み)
<div class="cards">
<article class="card">
<h3>…</h3><p>…</p><button type="button">詳細</button>
</article>
</div>トークンは 出発点のCSS の :root にあります。
コピーする CSS
:root {
--col-min: 12rem;
--space-5: 24px;
}
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(var(--col-min), 1fr));
gap: var(--space-5);
align-items: stretch;
}
.card { display: grid; grid-template-rows: auto 1fr auto; }
選択肢が多いと決められないと言われる
一度に見せる数を減らす。選ぶ数が増えるほど、決めるまでの時間は伸びる。認知の法則
一度に見せる数を5件以下に絞る
押し間違いが多い
小さくて遠い的ほど押しにくい。よく使うものを大きくし、動線の近くに置く。認知の法則
.toolbar { display: flex; gap: var(--space-2); } /* 隣の的と 8px あける */
.toolbar .button { min-inline-size: 2.75rem; } /* 横も 44px 以上 */
/* 基底の .button は「出発点のCSS」にある */表が読みにくい
縦罫を消し、横罫だけにする。数値は右揃えにして等幅の数字を使う。構図のパターン
td, th { border-block-end: 1px solid var(--color-border); border-inline: none; }
td.num { text-align: end; font-variant-numeric: tabular-nums; }この場面の値をまとめて決めるなら作業台へ。和文の予約ページに載せて、幅と明暗を替えて確かめてから CSS を持ち帰る: 並べ方(Flexbox と Grid)
この場面で貼れるもの#
答えを読んだら、ここから完成形を持ち帰れます。
見出し+本文+ボタンの1枚カード10分課題の最短形。h3・本文・Primaryボタン1枚。starterトークンでそのまま使える
3列カードグリッドサービスや記事一覧。auto-fitで幅に応じて列数が変わる
サブグリッドで行を揃えるカード見出し・本文・リンクの行位置をカード間で揃える
料金行カード項目名と金額を1行で比較させる。数字は等幅で右揃え
記事一覧(日付+見出し)ブログ・お知らせ向け。日付列を固定幅にして見出しを揃える
横スクロールカード列事例・プラン比較向け。スナップで1枚ずつ止める
特徴の3列グリッド強みを3つ並べる定番の節。auto-fitで1〜3列に変わる
実績数字の帯実績数字の帯。桁を揃え、単位とラベルは小さく添える
料金プランの比較カード料金プランの比較。推しは1枚だけ枠とバッジで立てる
FAQアコーディオンdetails/summaryのFAQ 5問。開閉はJSなしで動く
お客さまの声お客さまの声2件。blockquoteとfigcaptionの正しい組み方
進め方の3ステップ進め方3ステップ。olとcounterで番号を自動にする
章見出しの帯章の始まりを告げる帯。章番号・見出し・リード・id を書き換えて節ごとに繰り返す
会社概要の表会社・店舗概要の表。thを縦に積み、罫は横だけ
問い合わせCTAの面問い合わせへ誘導する面。電話とフォームの2択と受付時間
画像と本文の左右交互画像と本文の左右交互。偶数セットで反転しスマホは縦積み