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

我们知道,我们可以用display:nonevisibility:hidden opacity:0 等方法隐藏元素,那么他们有什么区别呢?

(1)是否占据空间

  • display:none 不再占据空间,会引起重排和重绘
  • visibility:hidden 占据空间,仅引起重绘
  • opacity:0 占据控件,引起重绘

(2)是否可以被继承

  • display:none 不会被子元素继承,但是子元素不会显示
  • visibility:hidden 会被子元素继承,子元素可以设置visibility:visible来进行反隐藏
  • opacity:0 会被子元素继承,但子元素不能通过opacity:1来进行反隐藏

(3)transition属性是否有效

  • display:none 完全不受transition属性的影响,元素立即消失
  • visibility:hidden 元素消失的时间跟transition属性设置的时间一样,但是没有动画效果
  • opacity:0 能够进行正常的动画效果

(4)对事件的响应

  • display:none 由于元素消失,不能触发如click等事件,但可以通过js触发设置了display:none的元素的事件
  • visibility:hidden 由于元素隐藏了,也不能触发click等事件
  • opacity:0 可以触发事件,元素只是看不见而已。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值