可见性属性

最后更新:2026-09-13

visibility 可见性属性

visibility 属性控制元素是否可见,与 display:none 的关键区别在于:hidden 仍占据布局空间,只是视觉上不可见。默认值 visible 正常显示。该属性是可继承的,常用于实现隐藏但保留占位的交互效果。

分类
初始值visible
继承
适用于all
可动画discrete
CSS 版本CSS2
状态标准

📝 语法

visibility: visible | hidden | collapse;

⚙️ 取值

类型描述
visible | hidden | collapse关键字控制元素是否可见(hidden 仍占空间)

▶ 示例

编辑下方代码,在 playground 中查看实时效果:

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
visibility v1 v12 v1 v1 v1
所有主流浏览器均支持
提示: visibility:hidden 元素仍占据空间,display:none 则完全移除布局。

❓ 常见问题

Qvisibility:hidden 和 display:none 有什么区别?
Avisibility:hidden 让元素不可见但仍占原布局空间,仍在文档流中,屏幕阅读器也会读到;display:none 把元素从文档流完全移除,不占空间、读不到内容。需隐藏但保留占位用 visibility:hidden,需彻底移除(且不渲染)用 display:none。
Qvisibility:hidden 和 opacity:0 有什么区别?
A两者视觉上都隐藏元素且保留空间,但:opacity:0 元素仍可被点击、仍响应事件,且可以平滑过渡动画;visibility:hidden 不再响应鼠标事件(可穿透),过渡支持有限。opacity 会创建新的层叠上下文;visibility 在隐藏时不影响子元素布局,子元素还能单独设为 visible 恢复显示。
Qvisibility 是继承的吗?
A是。visibility 是少数可继承的 CSS 属性,父元素设为 hidden 后子元素默认也隐藏,但子元素可以单独设置 visibility:visible 强制显示。利用这一点可以做子菜单、展开面板等交互:父容器 hidden,悬浮时让子元素 visible,无需改动父元素本身。
Qvisibility 支持过渡动画吗?
Avisibility 是离散型属性,transition 通常表现为切换而非渐变。常见技巧是与 opacity 一起过渡:opacity 从 0 渐变到 1,visibility 延迟到动画末尾再切换,实现淡入淡出,常用于弹窗、提示框的显隐动画。

📚 相关教程

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏