display: none;
元素不占据空间:元素会从文档流中完全移除,不会占据任何空间
无法交互:元素及其子元素无法被点击或交互
不触发事件:元素不会触发任何事件(如点击、悬停等)
不渲染:元素不会被渲染,性能较好
适用场景:当需要完全移除元素且不占据空间时使用
visibility: hidden;
元素占据空间:元素仍然占据文档流中的空间,但不可见
无法交互:元素及其子元素无法被点击或交互
不触发事件:元素不会触发任何事件
渲染:元素会被渲染,但不可见
适用场景:当需要隐藏元素但仍希望它占据空间时使用
opacity: 0;
元素占据空间:元素仍然占据文档流中的空间,但不可见
可以交互:元素及其子元素仍然可以被点击或交互(除非配合pointer-events: none;)
触发事件:元素仍然会触发事件(如点击、悬停等)
渲染:元素会被渲染,但不可见
适用场景:当需要隐藏元素但仍希望它能够交互或触发事件时使用
.box {
color: transparent;
background-color: transparent;
}
元素占据空间:元素仍然占据文档流中的空间
可以交互:元素仍然可以交互
触发事件:元素会触发事件
渲染:元素会被渲染,但内容透明
适用场景:当需要隐藏元素但仍希望它能够交互或触发事件时使用
.parent {
position: relative;
z-index: 1;
}
.element {
position: absolute;
z-index: -1;
}
元素占据空间:元素仍然占据文档流中的空间
无法交互:元素及其子元素无法被点击或交互
不触发事件:元素不会触发事件
渲染:元素会被渲染,但被其他元素覆盖
适用场景:当需要隐藏元素但仍希望它占据空间时使用
.box {
height: 0;
overflow: hidden;
}
<div class="box">x</div>
元素占据空间:元素仍然占据文档流中的空间,但高度为 0
无法交互:元素及其子元素无法被点击或交互
不触发事件:元素不会触发事件
渲染:元素会被渲染,但内容被裁剪
适用场景:当需要隐藏元素但仍希望它占据空间时使用
.box {
transform: scale(0);
}
元素占据空间:元素仍然占据文档流中的空间
无法交互:元素及其子元素无法被点击或交互
不触发事件:元素不会触发事件
渲染:元素会被渲染,但缩放为 0
适用场景:当需要隐藏元素但仍希望它占据空间时使用
.box {
position: absolute;
left: -9999px;
}
元素占据空间:元素会被移出屏幕,但仍会占据文档流中的空间(除非使用 position: absolute; 或 fixed)
可以交互:元素仍然可以交互(如点击、悬停等)
触发事件:元素会触发事件
渲染:元素会被渲染,但不在可见区域内
适用场景:当需要隐藏元素但仍希望它能够交互或触发事件时使用,常用于隐藏表单标签或屏幕阅读器内容