显示与可见性属性有什么区别?
答案 0 :(得分:105)
visibility
属性仅告知浏览器是否显示元素。它可见(visible
- 你可以看到它),或者看不见(hidden
- 你看不到它。)
display
属性告诉浏览器如何绘制并显示一个元素(如果有的话) - 它是否应显示为inline
元素(即它与文本和其他内联元素)或block
- 级元素(即它具有您可以设置的高度和宽度属性,它可以浮动等),或者inline-block
(即它就像一个块框)但是内联而且是其他一些(list-item
,table
,table-row
,table-cell
,flex
等。
当您将元素设置为display: block
但也设置visibility: hidden
时,浏览器仍会将其视为块元素,除非您没有看到它。有点像你在一个看不见的盒子上堆叠一个红色的盒子:红色的盒子看起来像漂浮在半空中,而实际上它是坐在你看不见的物理盒子的顶部。
换句话说,这意味着display
不是none
的元素仍会影响页面中元素的流动,无论它们是否可见。围绕具有display: none
的元素的框将表现为该元素从未存在(尽管它保留在DOM中)。
答案 1 :(得分:21)
可见性:隐藏;
显示:无;
额外说明:
答案 2 :(得分:18)
display:none从html流中删除元素,而visibility:hidden则不会。
答案 3 :(得分:2)
显示:无;将从DOM中删除DOM元素视觉样式/物理空间,而可见性:隐藏;不会删除元素,只是隐藏它。因此,在设置为可见性时,在DOM中占据300px垂直空间的div将仍然占据300px的垂直宽度:隐藏;但是当设置为display:none;它的视觉风格和它所占据的空间是隐藏的,然后空间被“释放”,因为没有更好的词。
[编辑] - 过去一段时间我写了上面的内容,无论我是否知识不足或有不好的一天,我都不知道,但实际情况是,元素永远不会从DOM中删除层次结构。使用display:none时,所有块级别显示“样式”都完全“隐藏”,而可见性:隐藏;元素本身是隐藏的,但它仍占据DOM中的可视空间。我希望这可以解决问题