CSS visibility

CSS visibility 可視性

この記事では、CSS の visibility プロパティについて詳しく解説し、要素の可視性を制御する方法と、display プロパティとの比較分析を行います。


一、visibility プロパティ値の詳細

visibility プロパティは、要素を表示するか非表示にするかを制御します。以下の値を取ることができます。

  • visible: 要素はデフォルトで表示されます。
  • hidden: 要素は非表示になりますが、要素が本来占有するスペースはそのまま残ります。レイアウトには影響しません。
  • collapse: 主にテーブル要素に使用され、行または列を非表示にし、周囲の要素を調整してスペースを埋めます。他の要素に対しては、hidden と同じ効果があります。
  • inherit: 親要素から visibility プロパティの値を継承します。

二、visibility と display の違い

visibilitydisplay はどちらも要素の表示状態を制御しますが、重要な違いがあります。

  • visibility: hidden は要素を非表示にしますが、要素が本来占有するスペースはそのまま残ります。ページのレイアウトには影響しません。
  • display: none は要素を非表示にし、要素が本来占有するスペースもなくなります。ページのレイアウトに影響します。
特性 visibility: hidden display: none
表示/非表示 非表示 非表示
スペースの占有 占有する 占有しない
レイアウトへの影響 影響しない 影響する

三、使用シーン

visibility プロパティは、以下のような場合に使用できます。

  • 要素を非表示にしつつレイアウトを保持する場合: 例えば、条件に応じてコンテンツの一部を表示/非表示にする場合、スペースを保持したままにすることができます。
  • ドロップダウンメニューの作成: デフォルトではドロップダウンメニューを非表示にし、マウスホバー時に表示するようにできます。
  • アニメーション効果: transition プロパティと組み合わせて、要素のフェードイン/フェードアウト効果を実現できます。

四、サンプルコード


<style>
/* 要素を非表示にしつつスペースを保持 */
.hidden-element {
  visibility: hidden;
}

/* マウスホバー時にドロップダウンメニューを表示 */
.dropdown:hover .dropdown-content {
  visibility: visible;
}

/* フェードイン/フェードアウト効果 */
.fade-in {
  visibility: visible;
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}

.fade-out {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s linear 0.5s, opacity 0.5s ease-in-out;
}
</style>

五、まとめ

visibility プロパティは、要素の可視性を柔軟に制御する方法を提供します。display プロパティとは異なり、要素のスペースを保持するため、ページレイアウトが崩れるのを防ぐことができます。visibility プロパティの使い方を習得することで、よりリッチなウェブページのインタラクション効果を作成することができます。


関連QA

Q1: visibility: hidden と opacity: 0 の違いは何ですか?

A1: どちらも要素を非表示にしますが、visibility: hidden は要素が本来占有するスペースはそのまま残ります。一方、opacity: 0 は要素の透明度を0にするだけで、要素はスペースを占有したままになります。また、opacity: 0 の要素はマウスイベントに反応しますが、visibility: hidden の要素は反応しません。

Q2: visibility プロパティは transition でアニメーションできますか?

A2: はい、visibility プロパティは transition プロパティと組み合わせてアニメーションできます。ただし、visibility: visible から visibility: hidden への遷移はアニメーションされません。visibility: hidden から visibility: visible への遷移のみアニメーションされます。

Q3: visibility プロパティの使い道として、他にどのようなものがありますか?

A3: 以下は、visibility プロパティのその他の使用例です。

  • 印刷レイアウトの制御: 画面では表示したくない要素を印刷時にのみ表示する。
  • 画像の遅延読み込み: 初期表示時には画像を非表示にし、ページの読み込みが完了した後表示する。

その他の参考記事:CSS の表示と可視性