css中visibilty: hidden 和 display: none 的区别
文章类型:CSS
发布者:hp
发布时间:2025-04-17
visibility: hidden 和 display: none 在 CSS 中均用于隐藏元素,那么,他们又什么区别呢?
display: none=>元素完全从文档流中移除,不占据任何空间,后续元素会重新排列
visibility: hidden=>元素不可见但仍占据原有空间,布局保持不变
display: none=>所有子元素无论自身如何设置都会被隐藏
visibility: hidden=>元素默认继承父级的 visibility: hidden,但若某个子元素显式设置为 visibility: visible,则该子元素会可见
display: none=>元素无法触发或响应任何事件(如点击、悬停)
visibility: hidden=>元素默认不触发事件,但若子元素设置为 visibility: visible,则这些子元素仍可触发事件
display: none=>无法直接应用过渡效果
visibility: hidden=>可与 opacity 等属性配合实现平滑过渡效果
display: none=>浏览器可能跳过渲染该元素,提升性能
visibility: hidden=>元素仍参与布局计算,可能对性能有轻微影响
两者通常都会被屏幕阅读器忽略,但可通过 aria-hidden="true" 显式控制
<div style="display: none;">隐藏元素</div>
<div>后续元素</div>
<!-- 显示效果:后续元素紧接在前一个可见元素之后 -->
<div style="visibility: hidden;">隐藏元素</div>
<div>后续元素</div>
<!-- 显示效果:隐藏元素的位置留白,后续元素位置不变 -->
1:需要彻底移除元素时(如动态切换内容),使用 display: none。
2:需保留布局或实现过渡动画时,使用 visibility: hidden