一、写在前面页面优化在面试的过程中经常遇到的问题,今天就来总计一下重绘和回流的问题。 二、重绘和回流是什么我们都知道一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点进行几何布局形成render树(渲染树),当渲染树构建完成后,页面就根据DOM树开始布局,渲染树也根据设置的样式渲染这些节点。 在这一过程中,...
回流:当render树中的一部分或者全部因为大小边距等问题发生改变而需要重建的过程叫做回流(改变大小)。重绘:当元素的一部分属性发生变化,如外观背景色不会引起布局变化而需要重新渲染的过程叫做重绘(改变样式)。注意:回流必将引起重绘,而重绘不一定会引起回流。2.回流和重绘发生条件 当页面布局和几何属性改变时就...
还有添加节点的时候比如要添加一个div里面有三个子元素p,如果添加div再在里面添加三次p,这样就触发很多次回流和重绘,我们可以用cloneNode(true or false) 来避免,一次把要添加的都克隆好再appened就好了,还有其他很多的方法就不一一说了 5. 减少重绘和回流 (1)使用transform替代top 123.test {4position: absol...
重绘(repainting):元素样式发生改变,但宽高、大小、位置等不变; 如:color、background-color属性 回流(layout):元素的大小或者位置发生了变化(当页面布局和几何信息发生变化的时候),触发了重新布局,导致渲染树重新计算布局和渲染。 如:添加或删除可见的DOM元素;元素的位置发生变化;元素的尺寸发生变化;内容发生变化;页...
当我们需要对DOM对一系列修改的时候,可以通过以下步骤减少回流重绘次数: 使元素脱离文档流 对其进行多次修改 将元素带回到文档中。 该过程的第一步和第三步可能会引起回流,但是经过第一步之后,对DOM的所有修改都不会引起回流,因为它已经不在渲染树了。
重绘是指的是HTML元素外观的改变而触发的浏览器重新绘制的行为,例如改变元素的vidibility、color等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。重绘不会带来重新布局,所以不一定会产生回流。但是,如果触发回流的话就一定会涉及重绘。根据重绘的特点,我们可以让经常需要变化的元素,脱离文档流。如...
当我们需要对DOM对一系列修改的时候,可以通过以下步骤减少回流重绘次数: 使元素脱离文档流 对其进行多次修改 将元素带回到文档中。 该过程的第一步和第三步可能会引起回流,但是经过第一步之后,对DOM的所有修改都不会引起回流重绘,因为它已经不在渲染树了。
回流必重绘,重绘不一定回流,回流的场景 删除或新增可见元素元素位置变化元素尺寸变化内容变化,字体或者图片resize 减少回流 使用 transform 替代 top 等定位使用 visibility 替换 display: nonedom 位置属性值不要在循环里重复获取将频繁改动的元素单独合成一个图层,避免该节点回流影响其他元素 单独合成图层 translateZ、...
回流(reflow):对于DOM结构中的各个元素都有自己的盒子模型,这些都需要浏览器根据各种样式(浏览器的、开发人员定义的等)来计算并根据计算结果将元素放到它该出现的位置,这个过程称之为reflow; 重绘(repaint):当各种盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特...
回流和重绘 1.什么是回流 回流(reflow)指的是当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建,即渲染树需要重新计算。 也就是说,回流是指DOM的变化影响到了元素的几何属性(宽和高),浏览器会重新计算元素的几何属性,会使渲染树中受到影响的部分失效,浏览器会验证DOM树上的...