interview
frontend-classic
什么是回流和重绘什么场景下会触发怎么减少回流和重绘

前端经典面试题合集, 什么是回流和重绘?什么场景下会触发?怎么减少回流和重绘?

前端经典面试题合集, 什么是回流和重绘?什么场景下会触发?怎么减少回流和重绘?

QA

Step 1

Q:: 什么是回流和重绘?

A:: 回流(Reflow)是指当渲染树中的一部分(或整个)因为元素的尺寸、布局、隐藏等变化而需要重新计算几何属性的过程。重绘(Repaint)是指当元素的外观发生改变但不影响布局时,浏览器会将改变后的元素重新绘制出来的过程,例如改变背景颜色、文字颜色等。

Step 2

Q:: 什么场景下会触发回流和重绘?

A:: 回流会在以下情况下触发:添加或删除可见的DOM元素、元素尺寸变化(包括边距、填充、边框等)、内容变化(例如文本数量或大小)、浏览器窗口尺寸变化等。重绘会在以下情况下触发:元素外观样式变化(例如颜色、背景图片等),但不影响布局的变化。

Step 3

Q:: 怎么减少回流和重绘?

A:: 减少回流和重绘的方法包括:使用CSS类进行批量样式修改而不是逐个修改;避免频繁操作DOM,尽量使用文档片段(DocumentFragment)进行批量更新;避免使用表格布局,因为表格的单一元素改变可能导致整个表格的重新布局;将动画效果应用到position属性为fixed或absolute的元素上;避免在布局信息改变时查询和使用offset、scroll等属性;使用虚拟DOM的库如React等。

用途

回流和重绘是前端开发中的重要概念,了解它们可以帮助开发者优化页面性能,提升用户体验。在实际生产环境中,当我们需要提高页面加载速度和响应速度时,减少不必要的回流和重绘是关键的一步。例如,在开发复杂的单页应用(SPA)时,频繁的DOM操作可能导致性能问题,这时优化回流和重绘就显得尤为重要。\n

相关问题

🦆
什么是CSS的层叠上下文?

层叠上下文(Stacking Context)是HTML中的一种三维概念,用于确定元素的显示顺序。创建新的层叠上下文可以通过设置特定的CSS属性,如z-index、position、opacity等。层叠上下文会影响元素的层叠顺序,使其在同一层叠上下文中独立于其他层叠上下文进行层叠。

🦆
什么是BFC块级格式化上下文?

BFC(Block Formatting Context)是一个独立的渲染区域,内部元素的布局不会影响到外部元素。创建BFC的方式包括设置浮动(float)、绝对定位(absolute)、固定定位(fixed)、inline-block元素、overflow不为visible的元素等。BFC在解决元素间的外边距合并问题、浮动元素清除问题等方面非常有用。

🦆
如何优化前端性能?

优化前端性能的方法包括:使用CDN加速资源加载;压缩和合并CSS、JavaScript文件;使用图片懒加载和适当的图片格式;启用浏览器缓存;减少DOM操作次数;使用合适的CSS选择器,避免过于复杂的选择器;使用请求动画帧(requestAnimationFrame)进行动画优化;采用合适的框架和库,如React、Vue等。