HH123_3 2023-12-23 15:26 采纳率: 86.8%
浏览 3
已结题

执行appendChild或removeChild时,会重新计算布局吗?什么时候重新计算布局?

执行appendChild或removeChild时,会重新计算布局吗?什么时候重新计算布局?

猜测:

  • 在事件循环中,有一阶段是留给渲染的,是否是在这时重新计算布局?appandChild或removeChild只是改变了dom。
  • 在渲染阶段根据改变的这个dom来重新计算布局。
  • 如果我添加了一个元素紧接着又删除了,渲染阶段是根本不知道的。即使这个元素上有动画也是不会出现的。

可以试一下这个例子codesandbox

其实应该是会重新计算布局的,可以检测一下添加该元素之前和之后其父元素的大小(offsetHeight ...),它的大小是会发生变化的。

添加类名(classList.add),也会触发重新布局(检测一下添加类名之后,大小或其他样式是否发生变化就可以验证了)。

有一个动画制作的方法flip,就用到了这个同步布局。

  • 写回答

1条回答 默认 最新

  • 我向往的。 2023-12-25 16:11
    关注

    当你调用appendChild或removeChild方法时,你只是改变了DOM结构,即向DOM树中添加或移除了元素。这些操作不会立即触发重新计算布局,而是将相应的DOM操作添加到渲染队列中,等待下一个渲染阶段执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 修改了问题 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥20 有偿,学生成绩信息管理系统
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列