display: none 彻底移除元素不占空间,visibility: hidden 保留空间但隐藏;常见失效原因是样式覆盖、JS重写或子元素显式设visible。
元素没藏住,通常不是属性写错了,而是被其他样式覆盖、层级干扰,或 display/visibility 的行为理解有偏差。关键得看清它们的区别和生效条件。
两者都让元素“看不见”,但效果完全不同:
常见原因不是语法错,而是样式优先级或继承问题:
最容易忽略的是子元素继承问题:
打开浏览器开发者工具(F12),直接选中元素:
异步时机问题(比如 DOM 尚未加载完成就操作)。