displayプロパティの基本

このページの目的

すべてのHTML要素が持つdisplayプロパティの基本的な値を理解します。
block, inline, inline-blockの違いをマスターすることで、なぜ要素がそのように配置されるのか、なぜ余白が効かないのか、といった問題の根本原因を理解できるようになります。

view_quiltdisplayプロパティの主な値

すべてのHTML要素は、デフォルトで以下のいずれかの性質を持っています。

display: block;
【性質】レンガブロックのように振る舞います。横幅いっぱいに広がり、前後に改行が入るため、要素は縦に積み重なっていきます。幅(width)、高さ(height)、余白(margin/padding)をすべて指定できます。
【代表的な要素】<div>, <p>, <h1><h6>, <ul>, <li>, <section>
display: inline;
【性質】文章の中の「単語」のように振る舞います。横に並び、自身のコンテンツ分しか幅を取りません。幅(width)と高さ(height)、そして上下の余白(margin-top/bottom)は指定しても無視されます。
【代表的な要素】<span>, <a>, <strong>, <img>
display: inline-block;
【性質】blockinlineの良いとこ取りです。文章の中の単語のように横に並ぶことができますが、ブロックのように幅・高さ・余白をすべて指定できます。
【代表的な使い方】ナビゲーションメニューのボタンなど、横に並べたいけれど、クリック領域として余白も確保したい要素に使います。

visibility視覚的な比較

以下の例は、3つの要素にそれぞれ異なるdisplayプロパティを適用したものです。振る舞いの違いを確認してみましょう。

<!-- HTML -->
<div class="box block-box">Block</div>
<span class="box inline-box">Inline</span>
<span class="box inline-block-box">Inline-Block</span>

<!-- CSS -->
.box {
  margin: 10px;
  padding: 20px;
  width: 200px; /* ← inlineには効かない */
  height: 100px; /* ← inlineには効かない */
  background: #eee;
}
.block-box { display: block; }
.inline-box { display: inline; }
.inline-block-box { display: inline-block; }

このコードを実際に試すと、inlineの箱だけ幅と高さが指定できず、中身の文字に合わせた小さな箱になっていることが分かります。


warningよくある間違いと対策

<a>タグをボタン風にしたのに、上下の余白が効かない
<a>タグはデフォルトでdisplay: inlineです。display: inline-block;またはdisplay: block;を指定して、余白が適用されるようにしましょう。
<span>に幅を指定しても、大きさが変わらない
<span>display: inlineです。大きさを指定したい場合はdisplay: inline-block;に変更するか、<div>などのブロック要素を使いましょう。
要素を横並びにしたいのに、縦に並んでしまう
横並びにしたい要素が<div><p>などのブロック要素である可能性が高いです。親要素にdisplay: flex;を指定するか、子要素自体をdisplay: inline-block;に変更するなどの対策が必要です。

チェックポイント

✅ 上下の余白や幅・高さを指定したい要素は、blockまたはinline-blockになっているか?
✅ 横に並べたい要素は、inlineまたはinline-blockになっているか?(FlexboxやGridを使わない場合)
✅ 開発者ツールで、意図したdisplayプロパティが適用されているか確認したか?