LoginSignup
39
31

More than 3 years have passed since last update.

display:none; VS visibility:hidden; VS opacity:0;

Last updated at Posted at 2017-10-18

CSSで要素を見えなくする以下の3つの指定についてです。それぞれ挙動に違いがあるのでまとめておきます。
”領域を確保するかどうか”"クリックできるか”の違いがあることを覚えておくようにしています。

表にまとめると以下のようにそれぞれ違う挙動になります。

スタイル 領域の確保 クリック(イベント)
display:none; × ×
visibility:hidden; ×
opacity:0;

使い所

display:none;

完全に消えます。

visibility:hidden;

領域を確保するけどクリックすることはできない。

opacity:0;

透明になるだけで消えるわけではない。領域も確保するしクリックも出来るため誤クリックの原因になることも。(対応を後述)

opacityプロパティの値が0の時の誤クリック対応

非表示にしていた要素をアニメショーンを使ってふわっと表示させたい時があると思います。
displayの値がnoneになっているとtransitionプロパティが効かないのでopacityを使いたいところですが、領域も確保するしクリックも出来るため誤クリックが起きてしまいます。その場合はpointer-eventsプロパティを使って対応できます。

css

.item{
 opacity: 0;
 pointer-events: none;
 transition: all 0.5s;
}
.item:hover{
 opacity: 1;
 pointer-events: auto;
}


39
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
31