Webサイトをコーディングしていて、
「思った通りにレイアウトが決まらない」「横並びにできない」
といった経験はありませんか?
その原因の多くは、CSSのdisplay
プロパティの理解不足にあります。
本記事では、display
の基本から応用まで、
各値の違い・使い分け・よくあるトラブル例まで、図解とコード例付きで徹底解説します。
displayプロパティとは?
display
は、要素のボックスの種類や並び方を指定するプロパティです。
- ブロック要素(block)やインライン要素(inline)の挙動
- 横並びや縦並びの制御
- FlexboxやGridなどのレイアウト制御
すべてdisplay
で決まります。
基本の種類
値 | 説明 | 代表的なHTML要素 |
---|---|---|
block | ブロックレベル要素。改行が入り、幅は親要素いっぱい | <div> , <p> , <h1> |
inline | インライン要素。改行されず、横並び | <span> , <a> |
inline-block | インラインの性質を持ちながら、幅・高さを指定可能 | <img> など |
none | 非表示 | すべての要素 |
flex | Flexboxコンテナに変える | <div> |
grid | Gridコンテナに変える | <div> |
blockとinlineの違い
block要素の特徴
- 画面幅いっぱいに表示される
- 上下に余白(改行)が入る
- 幅・高さを自由に指定できる
See the Pen Untitled by suguru (@suguru22) on CodePen.
inline要素の特徴
- 横方向に並ぶ
- 幅・高さは無視される
- 改行されず、文字や他のinline要素と並ぶ
See the Pen Untitled by suguru (@suguru22) on CodePen.
inline-blockの特徴
- 横並び可能
- 幅・高さを指定できる
- marginやpaddingも適用される
See the Pen Untitled by suguru (@suguru22) on CodePen.
noneで要素を非表示にする
- 完全にDOMから表示を消す
- レイアウトにも影響を与えない
See the Pen Untitled by suguru (@suguru22) on CodePen.
注意:visibility: hidden
とは違い、display: none
はレイアウトも消えます。
Flexboxで横並び・縦並びを自由に制御
Flexコンテナの作り方
See the Pen Untitled by suguru (@suguru22) on CodePen.
Flexboxでできること
justify-content
:左右配置(start, center, space-betweenなど)align-items
:上下配置(start, center, stretchなど)- 横並びだけでなく縦並びも可能 (
flex-direction
)
display: gridでレイアウトを制御する
See the Pen Untitled by suguru (@suguru22) on CodePen.
- 2列×2行のグリッドを簡単に作れる
- Flexよりもレイアウトの制御が精密
よくある「displayが効かない」原因と対策
原因 | 解決方法 |
---|---|
要素がinlineでwidthやheightが効かない | display: inline-block または block に変更 |
FlexやGridを指定しても思った通りに並ばない | 子要素にflex-growやalign-itemsなどを指定 |
display:noneが効かないと思った | visibilityやopacityと混同していないか確認 |
CSSの競合 | 優先順位・セレクタの詳細度を確認 |
インラインスタイルで上書きされている | 外部CSSを確認 |
まとめ表:displayプロパティ早見表
値 | 特徴 | 使いどころ |
---|---|---|
block | 改行される、幅いっぱい | div, p, h1などのブロック要素 |
inline | 横並び、幅・高さ無効 | span, aなど文字やリンク |
inline-block | 横並び+幅高さ指定可 | 画像やボタンなど |
none | 非表示、レイアウトにも影響なし | モーダル非表示など |
flex | Flexコンテナ、横並び/縦並び | ナビゲーション、カードレイアウト |
grid | Gridコンテナ、行列レイアウト | 複雑なグリッドレイアウト |