我正在阅读有关两个CSS属性之间的区别display:none
,visibility:hidden
并且遇到了DOM重排术语。
该声明是
display: none
导致DOM重排,而visibility: hidden
不会。
所以我的问题是:
我正在阅读有关两个CSS属性之间的区别display:none
,visibility:hidden
并且遇到了DOM重排术语。
该声明是
display: none
导致DOM重排,而visibility: hidden
不会。
所以我的问题是:
visibility: hidden
元素似乎仍然存在(显示该元素所需的空间仍被占用,它仍在“流程中”,只是不可见),而某个display: none
元素将您的元素完全从流程中移出。
Answers:
一个回流计算页面的布局。元素上的重排会重新计算元素的尺寸和位置,并且还会触发该元素的子元素,祖先元素和出现在DOM中的元素的进一步重排。然后调用最后的重涂。回流非常昂贵,但不幸的是它很容易触发。
回流发生在以下情况:
- 在DOM中插入,删除或更新元素
- 修改页面上的内容,例如输入框中的文本
- 移动DOM元素
- 为DOM元素设置动画
- 对诸如offsetHeight或getComputedStyle之类的元素进行测量
- 更改CSS样式
- 更改元素的className
- 添加或删除样式表
- 调整窗口大小
- 滚动
有关更多信息,请参见此处:重绘和重排:负责地操作DOM
visibility
到none
是不是一个CSS样式的变化?
重排是Web浏览器进程的名称,用于重新计算文档中元素的位置和几何形状,以重新呈现部分或全部文档。
https://developers.google.com/speed/articles/reflow
display:none
隐藏div
好像div
没有渲染,而visibility:hidden
仅隐藏但空间仍被占用