HTMLには、改行されて縦に並ぶ要素や、横に続けて表示される要素が存在します。
本記事では、混同しやすいブロック要素とインライン要素、さらにインラインブロック要素についてまとめてみました。
本記事を読むことによって、下記について理解を深めることができます!
- ブロック要素、インライン要素、インラインブロック要素の違いが理解できる
- それぞれどのようなタグが該当するのか把握できる
- CSSでの指定方法が理解できる
本記事を通し、HTMLやCSSを勉強されている方のお悩みが解決できましたら幸いです。
ブロック要素(block)
ブロック要素とは
ブロックレベル要素とは、縦にそのまま出力される要素で、よく使用する要素(タグ)として、以下のものが挙げられます。
- <h1> ~ </h1> ・・・ <h6> ~ </h6>
- <p> ~ </p>
- <div> ~ </div>
- <header> ~ </header>
- <footer> ~ </footer>
- <nav> ~ </nav>
- <main> ~ <main>
- <section> ~ </section>
- <article> ~ </article>
- <aside> ~ </aside>
- <ul><li> ~ </li></ul>
- <ol><li> ~ </li></ol>
- <table> ~ </table>
- <form> ~ </form>
コーディングした際の挙動について
ブロック要素を実際にコーディングすると以下のような形で出力されます。
See the Pen Untitled by 岩村彰斗 (@fynxbyun-the-flexboxer) on CodePen.
タグごとに改行されて出力されておりますね!
このようにブロックレベル要素では、width(横幅)やheight(縦幅)を指定しない場合、widthは画面横幅いっぱいに、heightは”auto”となり、上記の場合は文字の大きさ分、高さが設定されております。
widthとheight、marginやpaddingも指定してみましょう!
問題なくpaddingもmarginも適用されております。
インライン要素(inline)
インライン要素とは
ブロック要素とは違い、改行されず、同じ行に出力されます。よく使用される要素として、以下のものが挙げられます。
- <a> ~ </a>
- <span> ~ </span>
- <img>
- <small> ~ </small>
- <input>
- <label> ~ </label>
- <strong> ~ </strong>
- <button> ~ </button>
コーディングした際の挙動について
インライン要素を実際にコーディングすると以下のような形で表示されます。
ブロック要素とは違い、横に繋がって表示されます。画面に入らない場合は、端で折り返して表示されます。
ブロック要素と同じようにmarginを上下左右に指定してみました。赤色の要素のみ指定しております。
左右は余白が作成されておりますが、上下にはmarginが効いていないことがわかります。
このようにインライン要素は上下のmarginを適用することができません。
それではpaddingはどうでしょうか。
おぉ…、なんかすごいことになっていますね。
paddingで内側のスペースができていることがわかりますが、上記のように、インライン要素でのpaddingは、要素同士が重なってしまい、うまく動作しません。
width(横幅)、height(縦幅)はどうでしょうか。
width(横幅)、height(縦幅)にそれぞれ、100pxずつ指定しておりますが、反映されておりませんね。
このようにインライン要素では、width、heightの制御はできません。
インラインブロック要素(inline-block)
インラインブロック要素とは
端的にご説明をすると、ブロック要素とインライン要素の特性を持つ要素となります。
インラインブロック要素は、始めて勉強される方が混同しやすいところだと思います。
実際にインラインブロック要素がどのような挙動になるか見ていきましょう。
コーディングした際の挙動について
インラインブロック要素は、CSSで指定する必要があるので、
display: inline-block;
こちらのプロパティと値を指定しております。
今の段階では、違いはわかりませんね。
それでは、marginプロパティを指定してみましょう。
インライン要素は、左右のみmarginの指定が効いておりますが、インラインブロック要素には上下左右にmarginが効いておりますね!
さらにインライン要素は文章の途中で改行されておりますが、インラインブロック要素は途中で改行されておらず、要素ごと次の行に表示されております。
このように、インラインブロック要素は、要素が入らない場合には次の行に出力されます。
それでは、paddingプロパティを指定してみましょう。
インライン要素は要素同士が重なっている場所がありますが、インラインブロック要素はインライン要素とは異なり、重なることはありません。
最後にwidth(横幅)、height(縦幅)も指定してみましょう。
インラインブロック要素には、width(横幅)、height(縦幅)の両方の指定が効いていることがわかります。
このようにインラインブロック要素は、ブロック要素と同様のCSSの指定が可能となります。
まとめ
本記事にて解説させていただいた内容をまとめると以下のようになります。
特徴はわかったけど、ではどんなときに使うのか?と考えられる方が多数いらっしゃるかと思います。
実際には、ヘッダーであったり、グローバルナビゲーションのコーディングで使用されるケースがあります。
横並びにテキストを表示させたい場合はインラインブロックだと自然と横並びになる、且つ高さも調整できるため、指定がしやすいですね!
さいごに
ブロック要素とインライン要素、インラインブロック要素の違いについて解説させていただきました。
慣れないうちは挙動がわかりずらいところもありますが、しっかりと仕様を把握しておくことで、コーディングがとてもしやすくなります。
コーディングの練習をしつつ慣れていきたいですね!