display: none、visibility: hidden 和 opacity: 0 之间的区别
共同点
都是隐藏
不同点
1. 是否占据空间
display: none
隐藏后,不占位置
visibility: hidden
: 隐藏后,仍然占据位置
opacity: 0
: 隐藏后,仍然占据位置
2. 子元素是否继承
display: none
: 不会被子元素继承,父元素都不存在了,子元素也不会显示出来
visibility: hidden
: 会被子元素继承,通过设置子元素visibility: visible
来显示子元素
opacity: 0
: 会被子元素继承,但不能设置子元素的opacity
来显示子元素
3. 事件绑定
display: none
: 隐藏后,DOM元素都不存在了,所以无法触发绑定事件
visibility: hidden
: 虽然元素仍然占据位置,但是无法触发绑定事件
opacity: 0
: 可以触发绑定事件
4. 过渡动画 transition
display: none
: 无效
visibility: hidden
: 无效
opacity: 0
: 有效