css前端

深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

重排是指浏览器在渲染过程中,重新计算元素的几何结构(位置、大小、盒模型)的过程。重绘是指元素样式发生改变(如颜色、透明度、阴影等)而不影响布局的情况下,浏览器重新将像素绘制到屏幕的过程。✅ 动画尽量只使用transform和opacity✅ 使用提前告诉浏览器优化这些属性❌ 避免

2025-04-07·阅读约 2 分钟·计算中...
深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

在前端开发中,CSS 动画是提升用户体验的重要手段,但很多开发者在使用动画时并不了解浏览器背后的渲染机制,导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排(Reflow)重绘(Repaint),并掌握如何编写高性能的 CSS 动画。


在这里插入图片描述

一、什么是 Reflow(重排)?

重排是指浏览器在渲染过程中,重新计算元素的几何结构(位置、大小、盒模型)的过程。

会触发 Reflow 的典型操作:

  • 修改几何类属性:widthheightmarginpaddingborder
  • 位置属性:topleftbottomright
  • 布局属性:displaypositionoverflow
  • DOM 操作:添加、删除、修改节点
  • 读取某些属性(如 offsetTop, scrollHeight 等)会强制触发 reflow

⚠️ 重排是浏览器渲染中最昂贵的操作之一,可能导致整个页面重新计算布局,开销巨大。


二、什么是 Repaint(重绘)?

订阅 FreeMac

每周精选:Mac 高效技巧、免费替代付费软件、开发者工具推荐。用对你的 MacBook,省钱 + 提效。