display: none
、visibility: hidden
与 opacity: 0
是我们常用来隐藏元素的几种方法,那么它们之间有什么区别呢?
区别
- 设置了
display: none
的元素不会被渲染在页面中,不影响页面其他元素的布局;而设置了visibility: hidden
和opacity: 0
的元素虽然在页面中不可见,但是它们仍然会被渲染,在页面中占据着相应的位置。 - 由于
display: none
会影响布局,所以它会引起重排
和重绘
;而visibility: hidden
和opacity: 0
不会影响页面布局,所以它只会引起重绘
。 visibility: hidden
具有继承性,但其子元素如果设置了visibility: visible
,那么子元素仍然会展示;opacity: 0
也具有继承性,即使子元素设置了opacity: 1
,子元素仍不可见。visibility: hidden
隐藏元素后元素不可点击,但是如果其子元素如果设置了visibility: visible
,那么其子元素仍可被点击;设置了opacity: 0
的元素,元素本身及其子元素都可以被点击。