网站首页 > 技术文章 正文
在浏览器中,重排(reflow)和重绘(repaint)是与页面渲染相关的两个概念:
1. 重排(Reflow):意味着重新计算并应用所有元素的几何属性,这可能会影响整个页面的布局。重排是一种较为昂贵的操作,会导致页面性能下降。常见的会触发重排的操作包括:
- 修改 DOM 结构(添加、删除、更新元素)。
- 修改元素的位置、尺寸或内容。
- 修改元素的样式(例如,改变元素的宽度、高度、边距、填充等)。
- 改变页面的默认字体。
2. 重绘(Repaint):意味着重新绘制页面上的元素,但不会改变它们的布局。重绘的开销通常比重排小,但仍然会影响性能。触发重绘的操作包括:
- 修改元素的颜色、背景色等。
- 修改元素的可见性。
- 修改元素的透明度。
- 修改文本内容。
引起重排的 API 和属性:
1. DOM 操作:
- document.createElement()
- element.innerHTML
- element.appendChild()
- element.removeChild()
- element.style.xxx(修改元素样式)
2. 布局属性读取:
- 访问元素的几何属性(例如,`offsetTop`、`offsetLeft`、`offsetWidth`、`offsetHeight`)。
3. 尺寸和位置计算:
- element.getBoundingClientRect()
- window.getComputedStyle()
4. 修改页面默认字体:
- 修改页面的默认字体大小。
5. 激活 CSS 动画和过渡:
- 修改动画或过渡的 CSS 属性。
6. 改变窗口大小:
- window.resizeTo()
- window.resizeBy()
- window.innerWidth 和 window.innerHeight
7. Flexbox 相关属性:
- 改变元素的 display 属性为 flex 。
- 修改元素的 flex 属性。
8. Grid 相关属性:
- 改变元素的 display 属性为 grid。
- 修改元素的 `grid-template-columns`、`grid-template-rows` 等属性。
引起重绘的 API 和属性:
1. 修改元素的颜色、背景色等:
- element.style.color
- element.style.backgroundColor
2. 修改元素的可见性:
- element.style.visibility
- 3. 修改元素的透明度:
- element.style.opacity
4. 修改文本内容:
- 直接修改元素的文本内容。
5. 激活 CSS 动画和过渡:
- 修改动画或过渡的 CSS 属性。
6. 修改元素的类名:
- 添加或删除元素的类名。
7. 改变窗口大小:
- window.resizeTo()
- window.resizeBy()
- window.innerWidth` 和 `window.innerHeight`(窗口大小变化可能引起页面重新布局)
8. 改变字体相关属性:
- 修改元素的 `font-family`、`font-size` 等属性。
猜你喜欢
- 2024-11-12 pyqtgraph系列文章:直方图(Histogram)
- 2024-11-12 Window对象的常见事件 window对象常用的方法有哪些?
- 2024-11-12 JavaScript Window - 浏览器对象模型
- 2024-11-12 Python Qt GUI设计:将UI文件转换Python文件三种妙招(基础篇—2)
- 2024-11-12 前端移动端常见问题 前端移动端适配方案
- 2024-11-12 WindowsServer2022:如何扩展磁盘空间?
- 2024-11-12 第36节 window对象的窗口-JavaScript
- 2024-11-12 JavaScript Screen对象 screen对象包含的属性可以修改
- 2024-11-12 「Pygame经典合集」??????终极白嫖大招:让你玩儿到爽
- 2024-11-12 Qt 教程| QScatterSeries 散点图 qt三维散点图
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-