执行appendChild或removeChild时,会重新计算布局吗?什么时候重新计算布局?
猜测:
- 在事件循环中,有一阶段是留给渲染的,是否是在这时重新计算布局?appandChild或removeChild只是改变了dom。
- 在渲染阶段根据改变的这个dom来重新计算布局。
- 如果我添加了一个元素紧接着又删除了,渲染阶段是根本不知道的。即使这个元素上有动画也是不会出现的。
可以试一下这个例子codesandbox
其实应该是会重新计算布局的,可以检测一下添加该元素之前和之后其父元素的大小(offsetHeight ...),它的大小是会发生变化的。
添加类名(classList.add),也会触发重新布局(检测一下添加类名之后,大小或其他样式是否发生变化就可以验证了)。
有一个动画制作的方法flip,就用到了这个同步布局。