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

13 篇文章 0 订阅
1. display: none
  • 设置该属性后,该元素和它所有的后代元素都会被隐藏。

  • 无法使用屏幕阅读器等辅助设备访问

  • 占据的空间消失

    <div>
        <p>A没有设置display:none</p>
        <p style="display: none;">B设置display:none</p>
        <p>C没有设置display:none</p>
    </div>
    

效果图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l5InuVEE-1622468189715)(C:\Users\xmydd\AppData\Roaming\Typora\typora-user-images\image-20210531204829290.png)]

2. visibility:hidden
  • 隐藏元素仍需占用与未隐藏时一样的空间,任然会影响页面布局

    <div>
        <p>A没有设置visibility: hidden</p>
        <p style="visibility: hidden;">B设置visibility: hidden</p>
        <p>C没有设置visibility: hidden</p>
    </div>
    

效果图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bfUyMp5a-1622468189719)(C:\Users\xmydd\AppData\Roaming\Typora\typora-user-images\image-20210531205218380.png)]

3. opacity: 0

visibility:hidden一样,隐藏元素仍需占用与未隐藏时一样的空间,任然会影响页面布局。opacity设置了元素的透明度

<div>
    <p>A没有设置opacity: 0;样式</p>
    <p style="opacity: 0;">B设置opacity: 0;样式</p>
    <p>C没有设置opacity: 0;样式</p>
</div>

效果图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qFNeHpid-1622468189736)(C:\Users\xmydd\AppData\Roaming\Typora\typora-user-images\image-20210531210543738.png)]

4. 区别
  • display: none会产生回流和重绘,visibility:hidden;opacity:0;只会引起页面重绘

  • visibility具有继承性,给父元素设置visibility:hidden;,子元素也会继承这个属性。但是如果重新给子元素设置visibility: visible,则子元素又会显示出来。这个和display: none有着质的区别

  • opacity也有继承性,但是父元素隐藏后,给子元素设opacity:1;,子元素也不会显示

  • opacity:0;隐藏后的元素可以点击

    • 效果图
      在这里插入图片描述
  • visibility: hidden和opacity:0不会影响计数器的计数。visibility: hidden虽然让一个元素不见了,但是其计数器仍在运行。这和display: none完全不一样

    <body>
        <div>
            <strong>给元素设置visibility:hidden样式</strong>
            <ol>
                <li>元素1</li>
                <li style="visibility:hidden;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
        <div>
            <strong>给元素设置display:none样式</strong>
            <ol>
                <li>元素1</li>
                <li style="display:none;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
    </body>
    

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGy87zrh-1622468189743)(C:\Users\xmydd\AppData\Roaming\Typora\typora-user-images\image-20210531213248979.png)]

  • CSS3的transition支持visibility属性,但是并不支持display,由于transition可以延迟执行,因此可以配合visibility使用纯css实现hover延时显示效果。提高用户体验。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值