【发布时间】:2022-11-21 07:33:48
【问题描述】:
我对 display: none 属性有点困惑。互联网上的许多文章都说将显示属性设置为没有任何元素不在 DOM 树中。这就是与 opacity: 0 和 visibility: hidden 的区别,后者不会从 DOM 中删除元素,只是使其不可见。
来自https://stackoverflow.com/a/4718378/20395932
因为 display: none 实际上是从 DOM 中移除元素。 可见性:隐藏只是让它们不可见,但它们仍然存在 那里。
来自https://blog.kevinchisholm.com/css/visibility-hidden-vs-display-none/
这是一个重要的细节,因为使用 display:none,你 有效地从 DOM 中删除元素。
我也读过
浏览器不会响应使用的元素的任何事件 显示:无或可见性:隐藏。
但是在 React 中,我为一个元素设置了一个 ref,将它的显示属性设置为无……我仍然在开发工具的 DOM 中看到该元素。我也可以通过 ref 调用这个元素的点击处理程序。 此外,我不明白
display: none如何从 DOM 中删除任何元素,如果它只是一个 CSS 属性并且不能真正操作 DOM。据我了解,带有
display: none的元素仍在 DOM 中,但只是没有呈现。但是如何响应事件呢?
【问题讨论】: