この記事ではCSSのdisplay
プロパティについて解説します。
CSSを学ぶにあたって絶対に避けては通れない重要な項目なので、しっかりと理解していきましょう。
displayとは?
要素の種類を指定し、表示形式を決めます。
指定することで、例えばブロックレベル要素をインライン要素に変えたりインライン要素をブロックレベル要素に変えることができます。
displayの使い方
display
に指定できる値は以下の通りです。
値 | 説明 |
---|---|
inline | インライン要素として表示 |
block | ブロック要素として表示 |
inline-block | インライン要素とブロックレベル要素のハイブリット |
none | 要素を非表示に |
table | table要素のような表示に |
table-cell | td要素のような表示に |
flex | flexコンテナを生成 |
全て説明すると長くなってしまいますので、今回の記事ではこの中からinline
・block
・inline-block
・none
のみを紹介します(table
・table-cell
・flex
については下記の記事をお読みください)。
-
-
【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で指定できません。
margin
とpadding
などの余白に関しては、上下は指定できませんが左右は指定できます。text-align
とvertical-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で指定できます。さらに、margin
とpadding
などの余白に関しても上下左右すべて指定できます。
text-align
とvertical-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
)を指定することができます。そして、margin
とpadding
などの余白に関しても、ブロック要素のように上下左右すべて指定できます。
text-align
とvertical-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 | ○ | ○ | ○ |
*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; ...