ブログ

インライン要素とブロック要素の違いを初心者向けに例を交えて完全解説

教える人

CSSで装飾を施す際になぜかうまく幅を合わせられない、余白を設定できない、といった経験はございませんか?

これにはある理由があります。

それは、HTMLのタグにはブロックレベル要素や、インライン要素といった性質があるのですが、

それを考慮に入れていないコーディングをしてしまっている可能性があるからです。

そこで今回は、HTML/CSS初学者向けにインライン要素とブロックレベル要素を分かりやすく解説していきます。


つむぎ
ブロック要素とかインライン要素とか名前は聞いたことはあるけど、そんなに大事なことなの?

実は、HTML5でこの2つの要素はなくなったのだ。でも、CSSの装飾をする際は知らないと思い通りの装飾することができなくなるから絶対抑えておくべき知識なのだ。
ずんだもん


今回はそういったことを防ぐためにインライン要素とブロックレベル要素についてわかりやすく解説するのだ。
ずんだもん


(今回のゴール)インライン要素とブロック要素を完璧に理解する!

ブロックレベル要素の特徴


ずんだもん
まずはブロックレベル要素の特徴について解説するのだ。

ブロックレベル要素とは、その名の通り、ブロック(箱や入れ物)の性質を持っています。

特徴として親要素の横幅いっぱいに広がるため、初期設定ではブロック要素を持つタグを2つ実装すると、それらは縦に並んでいきます。

ブロックレベル要素の特徴は下記の通りです。

  1. 縦並びである
  2. 幅や高さを自由に指定できる
  3. 余白を自由に指定できる
  4. 配置の指定ができない

これらの特徴があります。

インライン要素の特徴

反対にインライン要素の特徴を見ていきましょう。

インライン要素は文章の一部として扱われる要素になります。

ブロック要素が箱ならインラインはその中に入れる入れ物みたいなイメージです。

通常、ブロック要素の中に使われ、ブロックに効果をもたらすために使用されます。

例を挙げると、aタグはリンクを付けてブロックに効果を与えることができます。

そんなインライン要素の特徴は下記の通りです。

  1. 横並びである
  2. 幅や高さは指定できない
  3. 余白は左右のみ指定可。(推奨はされないが、paddingのみ上下も指定可)

  4. 配置の指定は親要素に指定することで可能

このようにほぼ真反対の性質を持っていることがわかると思います。

特にインライン要素は幅や高さや余白を自由に設定できないので、

それがwidthが効かないなどの原因があったりします。

代表的なブロックレベル要素のタグ

それでは代表的なブロックレベル要素のタグを見ていきましょう。

タグ説明
div

特定の範囲をグループ化する

pテキストの段落を表す
dl説明リストを表します
dt説明リストの中で用語を表す部分
dd

説明リストの中で用語の説明にあたる部分

ul項目の順序なしリストを表す
ol項目の順序付きリストを表す
liリストの項目を表す
article文書などの中で自己完結したコンテンツの項目を表す
asideサイドバーなどに使われる補助的なコンテンツ
h1~h6セクションの見出し
section文書の独立した一般的なセクションを表す
main文書の主要な内容を表す
header導入的なコンテンツを表す

 代表的なインライン要素のタグ

次にインライン要素のタグの例です

タグ説明
aハイパーリンクを作成する
br文中に改行を作成する
iframe現在のHTMLページに他のページを埋め込む
img文書に画像を埋め込む
inputフォームを作成し、ユーザからデータを受け取る
labelユーザインタフェースの項目のキャプションを表す
pictureレスポンシブの条件に応じた画像を表示する
small著作権表示など小さく表示される文を表示する
span記述コンテンツで汎用的に使われる行内コンテナーを表す
textareaユーザから複数行のデータを受け取る際に使われる
video文書中に動画を埋め込む

これらがインライン要素のタグの中でもよく使うものです。

使っていくうちにどんどん覚えていくと思うので、たくさんコーディングをして慣れていきましょう。

具体的なブロック要素とインライン要素の違い

ここからは実際にコードを書いてブロック要素とインライン要素の違いを確認してみたいと思います。

縦並びと横並び

まずは縦並びと横並びです。

下のコードはブロック要素のpタグとインライン要素のaタグそれぞれを複数記述したものです。

See the Pen Untitled by kota (@kota1459) on CodePen.

ブロック要素のpタグは縦に並び、インライン要素のaタグは横に並びましたね。

こうなった原因はブロック要素のpタグはデフォルトで横幅いっぱいに幅をとるため、縦並びになるからです。

反対にインライン要素のaタグは入力した内容分にしか幅をとらず、また、なるべく1行に収めようとする性質があるため、横幅いっぱいになるまでは1行で表示されます。

高さと横幅

次は高さと横幅についてです。

下のコードはブロック要素のpタグとインライン要素のaタグそれぞれに高さと横幅を指定しています。

See the Pen Untitled by kota (@kota1459) on CodePen.

CSSを確認するとわかるように、

pタグとaタグそれぞれに同じ高さと横幅を指定していますが、pタグにしか反映されていないことがわかります。

余白の設定

続いて、余白についてです。

marginとpaddingの両方を見ていきましょう。

まずはmarginからです。上下左右にmarginを24pxとってみました。

See the Pen Untitled by kota (@kota1459) on CodePen.

これを見てみると、左右のmarginはどちらも効いていることが確認できます。

ただ上下の余白を見てみると、ブロック要素の方は余白が確認できますが、

インライン要素の方は余白がなく、くっついて表示されています。

続いてpaddingです。上下左右にpaddingを12pxとってみました。

See the Pen Untitled by kota (@kota1459) on CodePen.

paddingは要素を押し広げる効果があるので、ブロック要素もインライン要素も背景色の部分が押し広がっていることが確認できます。

大きな違いとしては、ブロック要素の方はデフォルトの上下の余白があるため、上下のブロック要素同士で要素が重なることはないですが、インライン要素の方は、paddingで押し広げた要素の部分が重なって表示されてしまっています。

自動で余白をとってくれるといったことはありません。

冒頭でも軽く触れましたが、これがインライン要素にて上下をpaddingで調整することが非推奨である理由です。

配置の設定

今度は親要素であるdivタグにtext-align: center;をブロック要素とインライン要素に充ててみた結果です。

See the Pen Untitled by kota (@kota1459) on CodePen.

text-align: centerはインラインコンテンツを真ん中に持ってくるプロパティです。

ブロック要素においてはテキストにおいてのみ反映されます。ブロック自体は真ん中に移動することはありません。

試しに1つ目のpタグと2つ目のpタグで横幅を変えてみましたが、それでも真ん中に移動することはありませんでした。

逆にインライン要素は要素全体が真ん中に寄ったことが確認できます。

ココがポイント

インライン要素を真ん中に持ってくるにはtext-alignプロパティを使用する

まとめ

ここまで読んでいただいた方ならブロック要素とインライン要素の違いが掴めたのではないでしょうか。

もう一度、両者の違いを下記にまとめておきます。

ブロック要素

  1. 縦並びである
  2. 幅や高さを自由に指定できる
  3. 余白を自由に指定できる
  4. 配置の指定ができない

インライン要素

  1. 横並びである
  2. 幅や高さは指定できない
  3. 余白は左右のみ指定可。(推奨はされないが、paddingのみ上下も指定可)
  4. 配置の指定は親要素に指定することで可能

それぞれの要素の特徴を抑えてあげればCSSの実装も楽に感じるようになるはずです。

最初は戸惑う部分ではありますが、しっかり頭に入れておきましょう。



ずんだもん
ブロック要素とインライン要素の違いは分かったかな??

それぞれ特徴が多くて覚えるのが大変だったけど、要はブロック要素は箱のイメージで、その内容に限らず横幅いっぱい使うのに対して、インライン要素はその箱の中の入れ物のイメージで横幅も内容に準ずるっていう考え方だからこのような違いが生まれるってことだよね?
つむぎ

ずんだもん
その考え方でいいのだ。どのタグがブロック要素、インライン要素なのかわからなくなったら再度調べて少しずつ覚えていけばいいのだ。

最後までご覧いただき、ありがとうございました。

当サイトではフリーランスを目指す人のためのプログラミング教材の作成を心掛けてサイト運営を努めております。

別途、動画も出す予定で、そちらでは初心者向けに一からコーディングの解説を行っておりますので、

興味があればご覧いただければと思います。



【クレジット】
VOICEVOX:ずんだもん
立ち絵素材:ヒザフライ様
VOICEVOX:春日部つむぎ
立ち絵素材:ヒザフライ様

  • この記事を書いた人
  • 最新記事

Kota

現役フリーランス。新卒でネットワークインフラの企業に就職する。 働きながら、独学でHTML/CSS/Javascript/WordPressを習得し、独立。 現在、フリーランスとして働きながら、起業の準備中。 プログラミング解説サイトSteppin’の管理者。

-ブログ
-,