【发布时间】:2011-03-29 08:31:55
【问题描述】:
Display 与 Visibility 属性有什么区别?
【问题讨论】:
-
@KennyTM:假设 OP 专门要求比较每个属性的相应值。
标签: css
Display 与 Visibility 属性有什么区别?
【问题讨论】:
标签: css
visibility 属性只告诉浏览器是否显示一个元素。它要么可见(visible - 你可以看到),要么不可见(hidden - 你看不到)。
display 属性告诉浏览器如何 绘制和显示一个元素,如果有的话 - 它是否应该显示为 inline 元素(即它与文本和其他内联元素一起流动元素)或block-level 元素(即,它具有可以设置的高度和宽度属性,它是可浮动的等),或inline-block(即,它的作用类似于块框,但改为内联)和一些其他(list-item、table、table-row、table-cell、flex 等)。
当您将一个元素设置为display: block 但也 设置visibility: hidden 时,浏览器仍将其视为块元素,只是您看不到它。有点像您如何将一个红色盒子堆叠在一个看不见的盒子上:红色盒子看起来像是漂浮在半空中,而实际上它位于一个您看不到的物理盒子的顶部。
换句话说,这意味着带有display 而不是none 的元素仍然会影响页面中元素的流动,无论它们是否可见。用display: none 包围元素的框会表现得好像该元素从未存在过(尽管它仍保留在 DOM 中)。
【讨论】:
display: none;,那么该元素会从DOM 中删除吗?还是我完全糊涂了?
可见性:隐藏;
显示:无;
补充说明:
【讨论】:
display: none 将元素从 html 流中移除,而 visibility:hidden 不会。
【讨论】:
显示:无;将从 DOM 中移除 DOM 元素的视觉样式/物理空间,而 visibility:hidden;不会删除元素,而只是隐藏它。因此,当设置为 visibility:hidden; 时,在 DOM 中占据 300px 垂直空间的 div 仍将占据 300px 垂直宽度;但是当设置为显示时:无;它的视觉风格和它占据的空间是隐藏的,然后由于缺少更好的词而“释放”了空间。
[编辑] - 我之前写过上面的内容,我不知道是不是知识渊博,还是过得不好,但事实是,元素永远不会从 DOM 中删除等级制度。使用 display:none 时,所有块级显示“样式”都完全“隐藏”,而使用 visibility:hidden;元素本身是隐藏的,但它仍然占据 DOM 中的可视空间。我希望这可以解决问题
【讨论】:
display: none 将不会从 DOM 中删除元素。该元素仍然存在,只是没有显示。