はじめに

HTML/CSSを学ぶと出てくる「ブロック要素」と「インライン要素」。「幅を指定しても効かないのはなぜ?」「改行される・されないの違いは?」と戸惑いますよね。この記事では、両者の違い・代表的なタグ・display での切り替えまで、コード付きでやさしく解説します!

ブロック要素とインライン要素の違い

  • ブロック要素:横幅いっぱいに広がり、前後で改行。幅・高さの指定OK(例:<div> <p> <h1> <section>
  • インライン要素:内容の幅だけ、改行されない。幅・高さの指定は基本効かない(例:<span> <a> <strong>

ブロック要素の特徴

<p>これは段落です。</p>
<p>これは次の段落です。</p>

<p> はブロック要素なので、2つの段落は縦に並びます。背景色をつけると横幅いっぱいに広がります。

インライン要素の特徴

<p>これは<a href="#">リンク</a>と<strong>強調</strong>です。</p>

<a><strong> は文章の流れの中に横並びで収まり、改行されません。

displayで性質を切り替えられる

「インライン要素だけど幅と高さを持たせたい」というときは inline-block が便利です。

.btn {
  display: inline-block; /* 横並びのまま幅・高さが効く */
  width: 200px;
  height: 50px;
}
display値改行幅・高さ
blockする効く
inlineしない効かない
inline-blockしない効く

使い分け

  • レイアウトの構造(セクション・コンテナ)→ ブロック要素
  • 文章の一部の装飾・リンク → インライン要素

今は横並びに「inline-block」より「Flexbox」

かつては要素を横並びにするのにinline-blockがよく使われましたが、HTMLのタグ間の改行が“謎の隙間”になるという有名な落とし穴があります。私もこの隙間の正体が分からず何時間も溶かしました…。

今は横並びならFlexboxを使うのが主流で、この隙間問題に悩むこともありません。

.row {
  display: flex;
  gap: 16px; /* 隙間も自由にコントロール */
}

とはいえ「ブロックとインラインの性質の違い」を理解していないと、Flexboxを使っても崩れの原因が掴めません。土台としてこの知識はずっと役立ちます。

つまずき:inline要素に幅・高さが効かない

<span><a>widthheightを指定しても効かないのは、インライン要素の仕様です。サイズを与えたいときはdisplay: inline-block;(またはblock)に変えればOK。「効かない=性質のせい」と気づけると、原因究明がぐっと速くなります。

まとめ

  • ブロック=全幅・改行あり・サイズ指定OK
  • インライン=内容幅・改行なし・サイズ指定NG
  • inline-block なら両者の"いいとこ取り"ができる

要素の性質を理解すると、レイアウト崩れの原因がすぐ見抜けるようになります。学習や制作で行き詰まったら、ポートフォリオココナラもどうぞ。