通常フロー
“通常フロー(Normal flow)”にあるボックスはブロック整形コンテキストとインライン整形コンテキストのどちらか一つの整形コンテキストに参加します。“ブロック・レベル”のボックスはブロック整形コンテキストに参加し、“インライン・レベル”のボックスはインライン整形コンテキストに参加します。
ブロック整形コンテキスト
浮動化要素(“float: none;”でない)や絶対位置指定要素(“position: absolute;”)、ブロック・ボックスでないブロック・コンテナ(“display: inline-block;”など)、“overflow”プロパティの値が“visible”以外であるブロック・ボックスはその中に新たな“ブロック整形コンテキスト(Block Formatting Contexts)”を生成します。
ブロック整形コンテキストに含まれるボックスはブロック軸方向に順番に並べられます。例えば、書字方向が横書きの場合は上から下へボックスが並べられます。
ブロック整形コンテキストに参加するボックスのブロック軸方向の間隔はマージンによって指定されます。ブロック軸方向に並ぶ兄弟ボックスのマージンは折り畳みが起こります。
ブロック整形コンテキストに含まれるボックスのインライン軸方向のアウター・エッジは包括ブロックの縁と一致します。浮動化要素がある場合でもボックスが新たなブロック整形コンテキストを生成していない限り、行ボックスの長さは短くなるものの、ボックス自体のインライン軸方向の大きさは変わりません。
インライン整形コンテキスト
“インライン整形コンテキスト(Inline Formatting Contexts)”に含まれるボックスはインライン軸方向に順番に並べられます。例えば、書字方向が横書きの場合は左から右、もしくは右から左へボックスが並べられます。
インライン整形コンテキストに参加するボックスのインライン軸方向の間隔はマージンやボーダー、パディングによって指定されます。ブロック軸方向にはテキストのベースラインを揃えたり、ボックスの上端や下端を揃えることでの配置されます。ボックスを内包し、行を形成する長方形状の領域は“行ボックス(Line Box)”と呼ばれます。
インライン軸方向に並ぶボックスが行ボックスに収まりきらない場合は複数の行ボックスに分けられます。同じインライン整形コンテキストに複数の行ボックスがある場合は、それぞれの行ボックスは間をあけずにブロック軸方向に並べられます。