The CSS display property is a fundamental setting that determines how HTML elements are arranged and displayed on a page.
CSSのdisplayプロパティは、HTML要素の表示形式を決定する非常に重要なプロパティです。要素の配置、振る舞い、さらにはレイアウト全体に大きな影響を与えるため、正しく理解することで、より柔軟で効率的なデザインが可能になります。
displayプロパティの基本displayとは?displayは、HTML要素がどのように「表示」されるかを制御します。
ブラウザは各要素に対して、デフォルトのdisplay値を持っています。例えば、<div>は通常block、<span>は通常inlineです。
このプロパティを利用することで、要素のレイアウトの仕方や、コンテンツの流れを柔軟に調整できます。
block<div>, <h1>などHTML
<div class="block-sample">これはブロック要素です。</div>
CSS
.block-sample {
display: block;
background-color: #f0f0f0;
padding: 10px;
margin-bottom: 10px;
}
inline<span>, <a>などHTML
<p>
この文章の中に<span class="inline-sample">インライン要素</span>が入っています。
</p>
CSS
.inline-sample {
display: inline;
background-color: palegreen;
padding: 5px;
}
この文章の中にインライン要素が入っています。
inline-blockHTML
<div class="inline-block-sample">ボタン1</div>
<div class="inline-block-sample">ボタン2</div>
CSS
.inline-block-sample {
display: inline-block;
width: 150px;
height: 50px;
background-color: palegreen;
text-align: center;
line-height: 50px;
margin-right: 5px;
}
noneHTML
<div>常に表示される要素</div>
<div class="hidden">この要素は非表示です</div>
CSS
.hidden {
display: none;
}
displayプロパティ現代のWebデザインでは、単なるblockやinlineだけでなく、より複雑なレイアウトを簡単に実現できるプロパティも登場しています。
flexbox(柔軟なボックスレイアウト)は、一方向または複数方向に並ぶ要素の配置や並び順を簡単に制御できる手法です。
主軸(main axis)と交差軸(cross axis)の概念により、アイテムの整列や分布、余白の調整が容易になります。
display: flex;flex-directionrow、column、row-reverse、column-reverse)を設定。justify-contentflex-start、flex-end、center、space-between、space-around)。align-itemsflex-start、flex-end、center、baseline、stretch)。flex-wrapnowrap、wrap、wrap-reverse)を指定。HTML
<div class="flex-container">
<div class="flex-item">アイテム1</div>
<div class="flex-item">アイテム2</div>
<div class="flex-item">アイテム3</div>
</div>
CSS
.flex-container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
background-color: palegreen;
padding: 10px;
}
.flex-item {
background-color: darkgreen;
padding: 15px;
margin: 5px;
}
gridレイアウトは、二次元のグリッドを利用して要素を配置する方法で、複雑なレイアウトもシンプルなコードで実現できます。
行(row)と列(column)に分割し、各要素の位置や大きさを正確に制御できます。
display: grid;grid-template-columns / grid-template-rowsrepeat(3, 1fr)は3等分することを意味します。grid-gap(またはgap)grid-areaHTML
<div class="grid-container">
<div class="grid-item">グリッド1</div>
<div class="grid-item">グリッド2</div>
<div class="grid-item">グリッド3</div>
<div class="grid-item">グリッド4</div>
<div class="grid-item">グリッド5</div>
<div class="grid-item">グリッド6</div>
</div>
CSS
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 10px;
background-color: #f3e5f5;
padding: 10px;
}
.grid-item {
background-color: #ce93d8;
padding: 20px;
text-align: center;
}
displayプロパティの応用と注意点display: table; display: table-row; display: table-cell;<table>タグを使わずに、データの並びやレイアウトを表形式で表現したい場合に有用です。現在、ほとんどのモダンブラウザはflexboxやgridの仕様をサポートしていますが、古いブラウザ(特にIE)では一部サポートが不十分な場合があります。
レスポンシブデザインやアクセシビリティを考える際には、フォールバック(代替手法)も検討しましょう。
displayとvisibilityの違いdisplay: none; は要素自体をレイアウトから除外するのに対し、visibility: hidden; は要素を非表示にするが、レイアウト上はスペースを保持するという違いがあります。用途に応じて使い分けることが重要です。
一部の要素は、コンテキストによってデフォルトのdisplay値が変わる場合があります。例えば、フォームの要素やリストの項目は、各自の意味合いに応じた表示がなされます。
独自のカスタムコンポーネントを作成する際は、適切なdisplay値を指定して、意図したレイアウトが実現できるかテストすることが大切です。
JavaScriptを活用して、ユーザーの操作に応じてdisplay値を変更することで、タブの切り替えやモーダルウィンドウの表示・非表示など、動的なインタラクションが実現できます。
HTML
<script>
<!-- JavaScript code here -->
</script>
<button onclick="toggleVisibility('toggleDiv')">表示/非表示切替</button>
<div id="toggleDiv" style="display: block; background: palegreen; padding: 10px;">
この要素はボタンで表示/非表示が切り替わります。
</div>
JavaScript
function toggleVisibility(id) {
const element = document.getElementById(id);
element.style.display = (element.style.display === 'none') ? 'block' : 'none';
}
メディアクエリと組み合わせることで、画面サイズに応じてdisplay値を変更し、最適なレイアウトを実現することが可能です。
CSS
@media (max-width: 600px) {
.sidebar {
display: none; /* 小さい画面ではサイドバーを非表示にする */
}
}
CSSのtransitionやanimationプロパティと組み合わせると、displayそのものではなく、要素の出現方法(フェードイン・フェードアウトなど)を自然な形で表現することができます。
※ただし、displayプロパティはアニメーション対象にできないため、opacityやtransformを併用する工夫が必要です。
ブラウザのデベロッパーツールを活用して、各要素のdisplayプロパティやレイアウトの構造を確認しましょう。
特に、flexboxやgridレイアウトはビジュアルツールで確認できるため、問題解決やデザインの微調整に非常に役立ちます。
CSSのdisplayプロパティは、Webデザインにおけるレイアウト制御の要です。
block、inline、inline-blockの基本概念を押さえることから始めましょう。このコンテンツを通して、CSSのdisplayプロパティの基本から応用まで幅広く理解でき、Webページのデザイン力向上に役立てていただければ幸いです。