前端面试题:display:none与visibility:hidden的区别有哪些

 1.display: none不占据空间,即不在文档流中,而visibility:hidden还在文档流中。 通俗的来讲就是display: none的隐藏相当于完全消失不见了,而visibility:hidden相当于隐身,虽然看不见了,但是还占据一定的位置。

 display: none测试:
    <ul >
       <li>葡萄</li>
       <li style="display: none;">苹果</li>
       <li>草莓</li>
    </ul>

效果图如下:

ea5ac892365e40399c6031c8572e2c8b.png

visibility:hidden测试:
    <ul >
        <li>葡萄</li>
        <li style="visibility:hidden">苹果</li>
        <li>草莓</li>
     </ul>

效果图如下:

33a41139f9b3411496e8c6d800856abb.png

2.display: none子元素不可见。visibility:hidden的子元素如果设置visibility:visible则还可以看到。 即 visibility具有继承性,如果给父元素设置了这个属性,那么子元素也会继承这个属性,但是如果重新给子元素设置visibility:visible,则子元素又会重新显示出来

  display: none测试:
    <ul  style="display: none;">
       <li>葡萄</li>
       <li>苹果</li>
       <li>草莓</li>
    </ul>
   <hr />

效果图:

22dbb4ed821e42e4adaaf1d1df8ce336.png

visibility:hidden测试:
    <ul style="visibility:hidden">
        <li>葡萄</li>
        <li style="visibility:visible">苹果</li>
        <li>草莓</li>
     </ul>
     <hr />

36e99cc95f75498c8857eaa8ffc3b880.png

3.从上面也可以看到, display: none会影响计数器的计数,元素消失且不占据位置,计数器无法计数。visibility: hidden不会影响计数器的计数 ,只是元素看不见了,但占据位置,因此visibility: hidden相对于display: none会占一定的内存,存在一定内存消耗。也会影响页面的布局。

4.CSS3的transition支持visibility属性,但是并不支持display属性,transition可以配合visibility使用纯css实现hover进行延时显示和隐藏。

其外需要注意的是:​​​​​​​

visibility: hidden 相当于 display:none,能把元素隐藏起来,但两者的区别在于:

  •  1、display:none 元素不再占用空间。
  •  2、visibility: hidden 使元素在网页上不可见,但仍占用空间。

然而,visibility 还可能取值为 collapse 。

当设置元素 visibility: collapse 后,一般的元素的表现与 visibility: hidden 一样,也即其会占用空间。但如果该元素是与 table 相关的元素,例如 table row、table column、table column group 等,其表现却跟 display: none 一样,也即其占用的空间会释放。

在不同浏览器下,对 visibility: collapse 的处理方式不同:

  •  1、visibility: collapse 的上述特性仅在 Firefox 下起作用。
  •  2、在 IE 即使设置了 visibility: collapse,还是会显示元素。
  •  3、在 Chrome 下,即使会将元素隐藏,但无论是否是与 table 相关的元素,visibility: collapse 与 visibility: hidden 没有什么区别,即仍会占用空间。
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女码农୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值