Answers:
该visibility属性仅告诉浏览器是否显示元素。它是可见的(visible-您可以看到)或不可见的(hidden-您看不到)。
该display属性告诉浏览器如何绘制和显示元素(如果有的话)-是将其显示为inline元素(即,与文本和其他内联元素一起流动)还是block-level元素(即,具有height和width属性,你可以设置,它的浮动等),或inline-block(即它的作用就像一个黑匣子,但奠定了直列代替)和其他一些人(list-item,table,table-row,table-cell,flex,等)。
当您将元素设置为,display: block但同时又设置时visibility: hidden,浏览器仍将其视为块元素,除非您看不到它。有点像是将一个红色框堆叠在一个看不见的框之上:该红色框看起来好像漂浮在空中,而实际上却位于一个看不见的物理框之上。
换句话说,这意味着display不none存在的元素仍然会影响页面中元素的流动,无论它们是否可见。围绕元素的框的display: none行为就像该元素从不存在(尽管它仍保留在DOM中)。
display: none;,那么该元素是否已从DOM中删除?还是我完全困惑?
可见性:隐藏;
显示:无;
额外说明:
显示:无;将从DOM中移除DOM元素的视觉样式/物理空间,而visible:hidden; 不会删除该元素,而只是将其隐藏。因此,在将div设置为visible时,在DOM中占据300px垂直空间的div仍将占据300px垂直宽度。但是设置为display:none; 它的视觉风格被隐藏起来,然后由于缺少更好的单词而“释放”了空间。
[编辑]-前一段时间,我写了上面的文章,我是否不足够了解知识或日子不好,我不知道,但现实是,该元素永远不会从DOM层次结构中删除。使用display:none时,所有块级显示“样式”都完全“隐藏”,而具有visible:hidden; 元素本身是隐藏的,但仍在DOM中占据可视空间。我希望这可以清除一切
display: none会不会从DOM中删除的元素。元素仍然在那里,只是不显示。