当前位置:  开发笔记 > 编程语言 > 正文

visibility:hidden和display:none之间有什么区别?

如何解决《visibility:hidden和display:none之间有什么区别?》经验,为你挑选了13个好方法。

CSS规则visibility:hiddendisplay:none两个结果中的元素不可见.这些同义词是?



1> kemiller2002..:

display:none意味着有问题的标签根本不会出现在页面上(尽管你仍然可以通过dom与它进行交互).其他标签之间不会为其分配空间.

visibility:hidden意味着不同的是display:none,标签不可见,但在页面上为其分配了空间.标记已呈现,它只是在页面上看不到.

例如:

test | Appropriate style in this tag | test

更换[style-tag-value]display:none的结果:

test |   | test

更换[style-tag-value]visibility:hidden的结果:

test |                        | test


在谈论可见性与显示时,重要的是要记住css-transitions.例如,从可见性切换:隐藏; 能见度:可见; 允许使用css-transitions,而从display:none切换; 显示:块; 才不是.visibility:hidden具有不捕获javascript事件的额外好处,而opacity:0; 捕获事件.
关于一个人和另一个人的表现没有评论?我很好奇用哪种方法来隐藏绝对定位的元素,这些元素经常显示和隐藏.
@Kevin是正确的,因为它们都重新触发布局,绘画和复合,因此`visibility:hidden`和`display:none`同样具有高效性.但是,`opacity:0`在功能上等同于`visibility:hidden`并且没有重新触发布局步骤,所以如果你不介意仍然分配空的空间,我建议使用它(否则使用`display:none` ).
处理输入或按钮时应谨慎使用`opacity:0`,因为它们仍然存在并可能导致奇怪的用户交互.
这是一个完全的猜测,我没有做过任何测试,但我猜它们大致相同.一旦屏幕上的某些内容发生变化,整个屏幕就会重新渲染(至少它已经习惯了),所以这并不重要.你还在强制进行屏幕重绘.这可能是浏览器浏览器,实际上可能有更好的方法来优化代码而不是关注这些.

2> 小智..:

它们不是同义词.

display:none 从页面的正常流中移除元素,允许其他元素填充.

visibility:hidden 将元素留在页面的正常流中,这样仍然占用空间.

想象一下,你正准备在游乐园里骑车,而且该线路上有人会如此吵闹,以至于安全人员将他们从线路上拽下来.然后排队的每个人都会向前移动一个位置来填补现在的空位.这就像display:none.

与此类似的情况形成鲜明对比,但是在你面前的某个人穿上了一件隐形斗篷.在查看线条时,它看起来似乎有一个空的空间,但人们无法真正填满那个空洞的空间,因为有人还在那里.这就像visibility:hidden.


它们之间还有另一个很大的区别:至少在Chrome中,可见性可以与转换延迟一起使用,但显示会忽略它.

3> Kip..:

有一点值得补充,虽然没有被问到,但是有第三种选择可以使对象完全透明.考虑:

1st unseen link.
2nd unseen link.
3rd unseen link.


4> 小智..:

display:none 从布局流中删除元素.

visibility:hidden 隐藏它但留下了空间.



5> 小智..:

在子节点方面有很大的不同.例如:如果您有父div和嵌套子div.所以,如果你这样写:

在这种情况下,没有一个div可见.但如果你这样写:

然后子div将可见,而父div将不会显示.



6> ConroyP..:

它们不是同义词 - display: none从页面流中删除元素,页面的其余部分就像它不存在一样流动.

visibility: hidden 隐藏视图中的元素,但不隐藏页面流,在页面上留出空间.



7> wcm..:

display: none 完全从页面中删除元素,并且构建页面就像元素根本不存在一样.

Visibility: hidden 即使您无法再看到它,也会留下文档流中的空间.

这可能会也可能不会产生很大的不同,这取决于你在做什么.



8> Steven Willi..:

随着visibility:hidden对象仍占用垂直高度在页面上.随着display:none它完全删除.如果您在图像下方有文字,那么display:none该文本将向上移动以填充图像所在的空间.如果您执行可见性:隐藏文本将保留在同一位置.


水平尺寸也会保留.

9> slashnick..:

display:none将隐藏元素并折叠占用的空间,而visibility:hidden隐藏元素并保留元素空间.display:none也会影响旧版IE和Safari中javascript提供的一些属性.



10> szeryf..:

除了所有其他答案之外,IE8还有一个重要区别:如果您使用display:none并尝试获取元素的宽度或高度,IE8将返回0(而其他浏览器将返回实际大小).IE8仅返回正确的宽度或高度visibility:hidden.



11> Pearl..:

visibility:hidden保留空间; display:none没有.



12> 小智..:
display: none; 

它不会在页面上显示,也不占用任何空间.

visibility: hidden; 

它隐藏了一个元素,但它仍然会占用与以前相同的空间.该元素将被隐藏,但仍会影响布局.

visibility: hidden保留空间,display: none而不保留空间.

显示无示例:https://www.w3schools.com/css/tryit.asp?filename = trycss_display_none

能见度隐藏示例:https://www.w3schools.com/cssref/tryit.asp?filename=trycss_visibility



13> 小智..:

如果将visibility属性设置为"hidden",则浏览器仍会在页面上占用内容空间,即使它不可见.
但是当我们将对象设置为时"display:none",浏览器不会在页面上为其内容分配空间.

例:

Content not display on screen and even space not taken.
Content not display on screen but it will take space on screen.

查看详情

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有