跳到主要内容

display:none和visibility:hidden的区别是 ?

参考答案:

display:none和visibility:hidden的区别如下:

  1. 作用:display:none将元素的显示设为无,即在网页中不占任何的位置。visibility:hidden将元素隐藏,但是在网页中该占的位置还是占着。
  2. HTML元素状态:使用display:none后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”。而使用visibility:hidden后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),但它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。
  3. 在渲染树中的表现:display:none会让元素完全从渲染树中消失,渲染时不会占据任何空间。而visibility:hidden不会让元素从渲染树中消失,渲染的元素还会占据相应的空间,只是内容不可见。
  4. 继承属性:display:none是非继承属性,子孙节点会随着父节点从渲染树消失,通过修改子孙节点的属性也无法显示。而visibility:hidden是继承属性,子孙节点消失是由于继承了hidden,通过设置visibility:visible可以让子孙节点显示。
  5. 对文档流的影响:修改display属性通常会造成文档的重排,而修改visibility属性只会影响本元素。
  6. 读屏器读取内容:如果使用读屏器,设置为display:none的内容不会被读取,而设置为visibility:hidden的内容会被读取。

综上所述,display:none和visibility:hidden主要在元素的显示方式、在渲染树中的表现、继承属性、对文档流的影响以及读屏器读取内容等方面存在区别。在实际使用中,应根据具体需求选择合适的属性。