すべての要素には、レイアウト内でどのように流れるかを制御するデフォルトのdisplay動作があります。
<div>、<p>、<h1>、<section>、<ul>。<span>、<a>、<strong>、<em>。<p>This is a <strong>bold</strong> word inside a paragraph.</p>
<!-- <strong> stays inline; the two <div>s below stack vertically -->
<div>Block one</div>
<div>Block two</div>
span { width: 200px; height: 50px; } /* ❌ ignored — span is inline */
インライン要素にwidth/heightを設定しても何も起こりません。修正はそのdisplayを変更することです:
span { display: inline-block; width: 200px; } /* ✅ flows inline BUT respects size */
inline-blockはテキストフロー内に収まり(横並び)なおかつ幅/高さ/マージンを尊重します。ナビゲーションアイテム、バッジ、または行に配置されたボタンに最適です。
block → new line, full width, sizeable
inline → in-line, content width, NOT sizeable (vertically)
inline-block → in-line, content flow, sizeable
デフォルトのdisplayを理解することで、<span>が高さを受け入れない理由、<div>がなぜスタックするのか、そしてinline-block、flex、またはgridに切り替えるべき時が説明されます。
これは、任意のレイアウトシステムを適用する前に、要素がどのように配置されるかの基礎です。