基礎

ボックス

ウェブデザインにおけるすべてはボックス、またはボックスの不在だ。

Rachel Andrewが指摘するように、ウェブデザインにおけるすべてはボックス、またはボックスの不在だ。すべてがボックスのように見えるわけではない — border-radiusclip-path、変形は見かけを欺くことがある — しかしすべてはボックス状のスペースを占める。レイアウトとはすなわち、ボックスの配置だ。

ボックスモデル

ボックスモデルはコンテンツパディングボーダーマージンで構成される。CSSでこれらの値を変えることで要素の表示サイズと形を変更できる。

*, *::before, *::after {
  box-sizing: border-box;
}

display

ブロック要素は利用可能なインラインスペースをすべて占有する。インライン要素はコンテンツの幅しか持たない。タイポグラフィ的に考えると: ブロック要素は段落、インライン要素は単語のようなもの。

論理プロパティ

margin-leftのような物理プロパティはRTLのコンテキストで機能しない。論理プロパティはどの書字方向でも機能する:

/* Physical — breaks in rtl */
.icon { margin-right: 0.5em; }

/* Logical — writing-mode aware */
.icon { margin-inline-end: 0.5em; }

フォーマッティングコンテキスト

display: flexdisplay: gridを適用すると子要素の新しいフォーマッティングコンテキストが作られる。要素自体は外側では引き続きブロックとして振る舞う。フォーマッティングコンテキストはすべてのレイアウトの基盤だ。

示唆としてのCSS

正確な位置を指定するのではなく、制約を示唆してブラウザに結果を計算させるCSSを書く。これがアルゴリズム的、内在的レスポンシブレイアウトの核心だ。