display: none、visibility: hidden与opacity: 0的区别

1. display: none、visibility: hidden与opacity: 0的区别

display: nonevisibility: hiddenopacity: 0都可以让元素隐藏,它们之间的区别见下表:

特性(行为)display: nonevisibility: hiddenopacity: 0
在渲染树中
占据空间
可点击
子节点可修改
transition无效无效有效
性能导致回流,性能消耗大导致重绘,性能消耗较小导致重绘,性能消耗较小

表格的解读:

  1. display:none其实很好理解,只要记住设置该属性的元素并不会出现在渲染树中这一点就行了,那么其他的一些特性(行为)想想也知道了:肯定不占据页面空间、不可点击、子节点也不可修改、transition无效,这些其实都是废话,皮之不存,毛将焉附
    display:none属性的添加或去除,相当于在渲染树中增加或删除节点,这对整体页面的结构造成了巨大的影响,结构变了,那肯定得重新计算尺寸、然后再绘制,性能消耗当然大咯~
  2. visibility: hidden只是将元素隐藏了而已,设置该属性的元素还是会出现在渲染树中,其子元素可以通过设置 visibility: visible显示出来。
    visibility属性并不会改变页面元素的结构和尺寸,所以只需重新绘制一下即可,性能消耗较小。
  3. opacity: 0只是让元素的透明度变0,它还是存在于渲染树中,并且占据中间、可点击触发事件。
    opacity也不对元素的结构和尺寸造成影响,所以只需重新绘制一下即可,性能消耗也较小。

2. 补充:其他隐藏元素的方法

  1. 设置position属性值为fixed(absoluterelative)并设置足够大负距离lefttop使其“隐藏”;
  2. 用层叠关系z-index将元素置于最底层;
  3. 设置hight: 0,同时overflow: hidden
  4. text-indent: -9999px使文字隐藏。

本文参考整理自:
分析比较 opacity: 0、visibility: hidden、display: none 优劣和适用场景

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码飞_CC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值