【CSS入門】 inline?block?displayで要素の種類を指定しよう

更新日:

この記事ではCSSのdisplayプロパティについて解説します。

CSSを学ぶにあたって絶対に避けては通れない重要な項目なので、しっかりと理解していきましょう。

displayとは?

要素の種類を指定し、表示形式を決めます。

指定することで、例えばブロックレベル要素をインライン要素に変えたりインライン要素をブロックレベル要素に変えることができます。

displayの使い方

displayに指定できる値は以下の通りです。

説明
inline インライン要素として表示
block ブロック要素として表示
inline-block インライン要素とブロックレベル要素のハイブリット
none 要素を非表示に
table table要素のような表示に
table-cell td要素のような表示に
flex flexコンテナを生成

全て説明すると長くなってしまいますので、今回の記事ではこの中からinlineblockinline-blocknoneのみを紹介します(tabletable-cellflexについては下記の記事をお読みください)。

【CSS入門】tableとtable-cellで要素を横並びさせよう

この記事ではCSSのdisplayプロパティの値である、tableとtable-cellをセットで紹介します。 Flexboxの登場により使う機会がほとんど無くなりましたが、場合によってはまだまだ使う ...

続きを見る

【CSS入門】Flexboxの基本と使い方まとめ【そろそろ覚えたい】

この記事ではdisplayプロパティの値である、flex(Flexbox)を紹介します。 Flexboxを覚えることで、サイトを作る際にレイアウトを組むのがかなり楽になりますので、必ず使えるようにして ...

続きを見る

inline

display:inline;と指定した要素をインライン要素にすることができます。

インライン要素は前後に改行が入りませんので、インライン要素が続くと要素が横に並んでいきます。以下の場合、span要素はインライン要素なので、「赤」「青」「黄」の文字は横並びになります。

HTML

<p>信号は<span class="red">赤</span><span class="blue">青</span><span class="yellow">黄</span>です</p>

CSS

.red{
	color: red;
}

.blue{
	color: blue;
}

.yellow{
	color: yellow;
}

デフォルトでインライン要素

下記のタグはすべてデフォルトでインライン要素になっていますが、display:block;と指定すればブロックレベル要素に変ります。

  • a
  • br
  • label
  • small
  • span
  • strong

気をつけること

インライン要素の幅(width)と高さ(height)は「テキストの長さ」や「文字の大きさ」により決まるため、CSSで指定できません。

marginpaddingなどの余白に関しては、上下は指定できませんが左右は指定できます。text-alignvertical-alignの指定もできますが、text-alignは親要素に対して指定しないといけません。以下の場合、pタグ内にあるaタグ(デフォルトでインライン要素)の背景色のみが変わります。

HTML

<p>詳しくは<a>こちら</a>から</p>

CSS

a{
	background: blue;
}

block

display:block;と指定した要素をブロックレベル要素にすることができます。

ブロックレベル要素は親要素の幅全体に広がり自動的に要素の前後に改行が入るので、ブロックレベル要素が続くと要素は縦に並んでいきます。以下の場合、ブロックレベルのpタグが縦に並びます。

HTML

<p class="one">これはpタグです</p><p class="two">これもpタグです</p>

CSS

.one{background: blue;}

.two{background: orange;}

デフォルトでブロックレベル要素

下記のタグはすべてデフォルトでブロックレベル要素になっていますが、display:inline;と指定すればインライン要素に変ります。

  • div
  • dl
  • dt
  • dd
  • form
  • h1-h6
  • hr
  • li
  • ol
  • p
  • table
  • ul

気をつけること

ブロックレベル要素は、幅(width)と高さ(height)をCSSで指定できます。さらに、marginpaddingなどの余白に関しても上下左右すべて指定できます。

text-alignvertical-alignの指定はできません(中のテキストは中央揃えになります)。

HTML

<div class="BOX-A">BOX-A<div>

CSS

.BOX-A{
	width: 100px
	height: 100px;
	margin: 20px auto;
	padding: 30px 20px;
}

inline-block

インラインブロックは、インライン要素とブロックレベル要素のハイブリットです。インライン要素と同じで前後に改行が入りませんので横に並んでいきますが、ブロックレベル要素のように幅(width)と高さ(height)を指定することができます。そして、marginpaddingなどの余白に関しても、ブロック要素のように上下左右すべて指定できます。

text-alignvertical-alignの指定もできますが、text-alignは親要素に対して指定しないといけません。これらの特徴から、幅や高さを持ったボタンなどを横並びにしたいときなどによく使われます。

横並びで使うときのメリット・デメリット

メリットはfloatで横並びをする時と違い、要素の高さが違ってもレイアウトが崩れません。

デメリットは、要素と要素の間に隙間が生まれる事です。しかし下記のように要素にfont-sizeを指定して、親要素をfont-size:0;にすれば解決できるので、横並びにしたいときはinline-blockをドンドン使っても問題ありません。

CSS

.parent{
  font-size: 0;            /* 子要素の間の隙間を消す */
}
  
.child{
  display: inline-block;
  font-size: 16px;          /* 親要素で消したフォントサイズを戻す */
}

none

指定された要素をブラウザ上で完全に非表示にします。

見えないというだけでなく存在自体無くすので、高さなどもすべて無くなります。レスポンシブデザインで、ある要素を「パソコンで見るときは表示したいけど、スマホでは非表示にしたい・・・」という場面は多々ありますがそんなときによく使われます。

まとめ

この記事に書かれていることで、特に覚えておいて欲しいことは以下の3点です。

  • inlineを指定すると要素が横並びになり、幅と高さが指定できない
  • blockを指定すると要素が縦並びになり、幅と高さが指定できる
  • inline-blockを指定すると要素が横並びになるが、幅と高さが指定できる

さらにわかりやすいように、特徴早見表を作りました。

インライン ブロック インラインブロック
margin
padding △*1
width ×
height ×
border
text-align ○*2 × ○*2
vertical-align ×
background
*1 : 上下は効いていない様に見えます
*2 : 親ブロックに付けることで指定できます

CSS関係の記事は他にも書いているので、宜しければそちらもチェックしてみてください。

【完全初心者向け】CSSについての超簡単まとめ

WEBサイトを作る上で、HTMLと並んで絶対に欠かせない言語といえばCSS。 この記事ではCSSについてなるべく難しい言葉を使わずに、でも要点は抑えて解説していこうと思います。是非肩の力を抜いて読み進 ...

続きを見る

【CSS入門】tableとtable-cellで要素を横並びさせよう

この記事ではCSSのdisplayプロパティの値である、tableとtable-cellをセットで紹介します。 Flexboxの登場により使う機会がほとんど無くなりましたが、場合によってはまだまだ使う ...

続きを見る

【CSS入門】Flexboxの基本と使い方まとめ【そろそろ覚えたい】

この記事ではdisplayプロパティの値である、flex(Flexbox)を紹介します。 Flexboxを覚えることで、サイトを作る際にレイアウトを組むのがかなり楽になりますので、必ず使えるようにして ...

続きを見る

【CSS入門】positionの使い方を簡単解説【ちょっと難しい?】

この記事では要素の配置方法を指定する、CSSのpositionプロパティについて解説します。 absoluteやrelative・・・と聞くとWebデザインの勉強を始めたばかりだと難しく感じてしまいま ...

続きを見る

【CSS入門】z-indexを使えば要素の重なり順は思うがまま

この記事ではCSSのz-indexプロパティについて解説します。 Contentsz-indexとは?z-indexの使い方z-index: auto;z-index: 整数;まとめ z-indexと ...

続きを見る

【CSS入門】floatについて学んで初心者脱出しよう

この記事ではCSSの「float」プロパティについて解説します。 レイアウトをする際に物凄くお世話になるプロパティで、ここでつまづくとサイトを作ることが困難になってしまうので、しっかりと理解しておきま ...

続きを見る

【CSS入門】overflowで、はみ出し部分の表示を指定

この記事ではCSSのoverflowプロパティについて解説します。 Contentsoverflowとは?overflowの使い方overflow: visible;overflow: hidden; ...

続きを見る

-CSS

Copyright© Web Emo , 2024 All Rights Reserved.