visibility

インタラクション・UX

要素の可視性を制御するプロパティです。display: noneと違い、要素は非表示になりますが領域(スペース)は確保されたままになります。アニメーションやトランジションと組み合わせて使用されることが多いです。

構文

Syntax
visibility: visible | hidden | collapse

コード例

1

/* 基本的な使い方 */ .hidden-element { visibility: hidden; } .visible-element { visibility: visible; }
実行結果
visibility: visible / hidden の基本的な使い方
表示されている要素 (visibility: visible)
この要素は表示されている
非表示の要素も領域を確保しているため、レイアウトが保たれる

基本的な表示・非表示の制御

2

/* display: noneとの比較 */ .visibility-hidden { visibility: hidden; /* 領域は確保される */ } .display-none { display: none; /* 領域も削除される */ }
実行結果
display: none との違い
visibility: hidden(領域確保)
要素1
要素3
display: none(領域削除)
要素1
要素3
visibility: hiddenは要素2の領域が残るが、display: noneは完全に除去される

display: noneとの違いを明確にした比較例

3

/* スムーズなフェードイン・アウト */ .fade-element { visibility: hidden; opacity: 0; transition: opacity 0.3s ease, visibility 0.3s ease; } .fade-element.show { visibility: visible; opacity: 1; }
実行結果
opacityと組み合わせたスムーズなアニメーション
表示中(クリックで非表示)
visibilityとopacityを組み合わせてスムーズなフェード効果を実現

opacityと組み合わせたスムーズなアニメーション

4

/* ツールチップの実装 */ .tooltip { position: absolute; background: #333; color: white; padding: 8px 12px; border-radius: 4px; visibility: hidden; opacity: 0; transition: all 0.2s; pointer-events: none; } .tooltip-trigger:hover .tooltip { visibility: visible; opacity: 1; pointer-events: auto; }
実行結果
実用的なツールチップの表示制御
ホバー時にツールチップが滑らかに表示される

実用的なツールチップの表示制御

5

/* レスポンシブでの表示制御 */ .desktop-only { visibility: visible; } @media (max-width: 768px) { .desktop-only { visibility: hidden; } }
実行結果
レスポンシブでの表示制御
常に表示される要素
常に表示される要素
画面幅768px以下では中央の要素が非表示になる(領域は確保)

メディアクエリと組み合わせたレスポンシブ制御

6

/* JavaScript連携の例 */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); visibility: hidden; opacity: 0; transition: all 0.3s; } .modal-overlay.active { visibility: visible; opacity: 1; }
実行結果
モーダルオーバーレイの表示制御
モーダルの表示・非表示をvisibilityで制御し、スムーズなアニメーションを実現

モーダルオーバーレイの表示制御

💡 TIPS

visibility: hiddenは要素を非表示にしつつ領域を保持するため、レイアウトが崩れない。opacityと組み合わせることでスムーズなアニメーションが可能。display: noneはアニメーションできないが、visibility: hiddenはアニメーション可能。

⚠️ よくある間違い

visibility: hiddenでも領域は確保されるため、完全に要素を除去したい場合はdisplay: noneを使用する。pointer-eventsと組み合わせないとクリックイベントが残る場合がある。

関連プロパティ

ブラウザサポート

全ブラウザ対応