我正在使用visibility:hidden隐藏某些元素,但它们仍隐藏在页面上占用空间.
我怎样才能让它们在视觉上完全消失,好像它们根本不在DOM中(但实际上没有从DOM中删除它们)?
Huu*_*som 280
尝试设置display:none隐藏并设置display:block为显示.
Sal*_*lil 42
使用样式代替
<div style="display:none;"></div>
Run Code Online (Sandbox Code Playgroud)
Ahm*_*mad 19
切换display不允许平滑的 CSS 过渡。而是同时切换visibility和max-height。
visibility: hidden;
max-height: 0;
Run Code Online (Sandbox Code Playgroud)
小智 14
使用display:none是一个很好的选择只是为了删除元素但它也将被移除为屏幕阅读器.如果它影响SEO,也有讨论.A List Apart上有关于该主题的好文章
如果你真的只是想隐藏并不会删除元素,更好地利用:
div {
position: absolute;
left: -999em;
}
Run Code Online (Sandbox Code Playgroud)
像这样它也可以被屏幕阅读器阅读.
这种方法的唯一缺点是,这个DIV实际上是渲染的,它可能会影响性能,尤其是在手机上.
display: none是解决方案,这完全隐藏了元素及其空间。
display:none和的故事visibility: hiddenvisibility:hidden 表示标签不可见,但在页面上为其分配了空间。
display:none意味着完全隐藏元素及其空间。(虽然你仍然可以通过 DOM 与它交互)
display:none隐藏并设置display:block为显示。
这个问题的答案是说使用display:none和display:block,但是对于试图使用css过渡来使用可见性属性显示和隐藏内容的人来说,这无济于事。
这也让我发疯,因为使用display会杀死任何CSS过渡。
一种解决方案是将其添加到使用可见性的类中:
overflow:hidden
Run Code Online (Sandbox Code Playgroud)
这项工作确实取决于布局,但应将空内容保留在其所在的div中。