前言 页面显示到浏览器上的过程: 1.1.生成一个DOM树. 浏览器将获取到的HTML代码解析成1个DOM树,包含了所有标签,包括display:none和动态添加的节点. 1.2.生成样式结构体. 浏览器将所有样式解析成样式结构体,解析过程中会去掉浏览器不能识别的. 2.DOM树和样式结构体结合生成render树. render树类似于DOM树,render树每个节点有自己样式(盒子模型,margin.border.padding.content),但不包含display:none和head节…
一.前言 偶尔在面试过程中遇到过重汇与回流reflow的问题,毕竟页面优化也是考核一个开发者能力的关键之一,上篇文章聊了下documentfragment也是为了减轻回流问题,那么本篇文章好好介绍下重绘和回流. 二.重绘和回流是什么 怎么去理解这两个概念呢?从字面上理解,重绘,重新绘画,重新上色,较难产生联想的是回流. 我们都知道,一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点的几何属性形成render树(渲染树),当渲染树构建完成,页面就根据DOM树开始布局了,渲染树也根据设置的…
第一次听到重绘和回流是在鹅厂实习面试,那个时候对浏览器没有任何的概念,所以面试官说到这个问题的时候整个人都蒙圈了.下面是近期学习总结: 重绘(repaint)和回流(reflow) 文档初次加载时,HTML解析器会解析元素构建DOM树,CSS解析器将样式解析为样式结构体,之后通过DOM树和样式结构体构建渲染树,渲染树具有样式属性.然后遍历渲染树的每个渲染器将器布局到页面,最后浏览器将器绘制到页面. 重绘:当元素的外观或外观可见性(visibility)发生变化时会触发重绘 回流:render树中…
回流(reflow)与重绘(repaint) 很早之前就听说过回流与重绘这两个名词,但是并不理解它们的含义,也没有深究过,今天看了一套网易的题目,涉及到了这两个概念,于是想要把它们俩弄清楚... 一.概念 首先我们要明白的是,页面的显示过程分为以下几个阶段: 1.生成DOM树(包括display:none的节点) 2.在DOM树的基础上根据节点的集合属性(margin,padding,width,height等)生成render树(不包括display:none,head节点,但是包括visib…
什么是回流(重排 reflow)? 回流(重排 reflow):对DOM树进行渲染,只要修改DOM或修改元素的形状大小,就会触发reflow,reflow的时候,浏览器会使已渲染好受到影响的部分失效,并重新构造这部分,完成reflow后,浏览器会重新绘制受影响的部分到屏幕中 (继昨日每日一题:display:none和visibility:hidden 当display显示及隐藏元素时,显示时占据空间,隐藏时不占空间,隐藏前后DOM结构发生变化,所以需要重新渲染 当visibility显示及隐藏…
关于reflowreflow(英音:[ri:’fləu] 美音:[ri’flo])在词典中的解释是回流,逆流.而在web应用中,翻译为回流有些牵强.我个人觉得,理解为回炉(重新塑形),似乎更加形象一点.举个例子,页面上节点是以树的形式展现的.假如我使用JavaScript砍掉一个节点,这棵树为了不脱节,肯定要重新梳理一遍,将砍掉的那个断点重新结合起来又形成一颗完整的树,而这个结合梳理过程就是这里的reflow,所谓回流,就是由于某些原因(如修改),要将元素回过头来重新“流”一遍.而本译文的重点就…
HTML加载时发生了什么 在页面加载时,浏览器把获取到的HTML代码解析成1个DOM树,DOM树里包含了所有HTML标签,包括display:none隐藏,还有用JS动态添加的元素等. 浏览器把所有样式(用户定义的CSS和用户代理)解析成样式结构体 DOM Tree 和样式结构体组合后构建render tree, render tree类似于DOM tree,但区别很大,因为render tree能识别样式,render tree中每个NODE都有自己的style,而且render tree不包…
重绘 当页面元素样式改变不影响元素在文档流中的位置时(如background-color,border-color,visibility),浏览器只会将新样式赋予元素并进行重新绘制操作. 回流 当改变的操作响应文档内容或者结构,或者元素位置时,就会触发回流.有以下几种情况: 页面首次渲染 DOM操作(对元素的增删改.顺序变化等) 内容变化,包括表单区域内的文本变化 css属性的更改或者重新计算 增删样式表内容 修改class属性 浏览器窗口变化(滚动或缩放) 伪类样式激活(:hover等) 一些…
摘录: 1. 回流 回流是指浏览器为了重新渲染部分或者全部的文档而重新计算文档中元素的位置和几何构造的过程.    因为回流可能导致整个dom树的重新构造,所以会影响性能. 2. display:none;和visibility:hidden a. display:none; 1)元素隐藏后在文档流中不会占位 2)会造成回流 b. visibility:hidden 1)元素隐藏后仍在文档流中占位(视觉上的不可见) 2)不会造成回流…
原文链接:http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/ 有没有被标题中的5个“R”吓到?今天,我们来讨论一下浏览器的渲染(Rendering)-一个产生于Page 2.0生命周期中,甚至有时候会在下载瀑布流中出现的过程. 我们来讨论浏览器在接收到HTML.CSS和JavasSript后,如何把你的页面呈现在屏幕上. 一.浏览器渲染过程 不同的浏览器的渲染过程存在些许不同,但大体的机制是一样的,下图展示的是浏览器自下…