博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器渲染原理
阅读量:6039 次
发布时间:2019-06-20

本文共 1002 字,大约阅读时间需要 3 分钟。

之前头条面试被问到,虽然不是岗位相关的,但是还是想作为常识了解下。这里对这部分内容进行一个记录、梳理和总结。

· 首先说一下什么是浏览器渲染引擎。浏览器渲染引擎是渲染出浏览器展示的内容的。默认请情况下,浏览器渲染引擎可以显

示 HTML、XML文档以及图片。如果需要显示别的内容,比如现在浏览器都可以直接打开PDF文件,这些功能不是浏览器原生

的,是在浏览 器中安装了PDF阅读器的插件做到显示PDF文件的。本文主要总结渲染引擎最主要的用途——显示应用了CSS之

后的html及图片。

目前主流的浏览器Chrome和Firefox都是基于两种渲染引擎构建的。Firefox使用Geoko(Mozilla自主研发的渲染引擎),

Chrome使用的是Webkit。

渲染主流程

·首先获得请求的文档内容,以8K分块方式完成。

·解析HTML构建DOM树-->构建Render树-->布局Render树-->绘制Render树

注:

1.DOM树:浏览器将HTML解析成树形的数据结构

2.CSS Rule 树:浏览器将CSS解析成树形的数据结构

3.Render 树:将CSSOM和DOM合并成Render树

4.Layout:有了Render 树以后,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及从属关系,从而计算出每个

节点在屏幕中的位置

5.Painting:根基算出来的规则,通过显卡把内容画在屏幕上

6.Reflow(回流):浏览器发现某个部分发生了点变化影响了布局,需要倒回去重新渲染。Reflow会从HTML的root frame开始

往下递归,依次计算各个几何点的尺寸和位置(Reflow几乎无法避免)。界面上树状目录的折叠和展开(元素的显示和隐

藏)等,都会引起Reflow。鼠标滑过、点击等行为引起了页面上某些元素的变化,都会引起整个页面重新渲染。浏览器会

Reflow哪些代码,是无法估计的,一般都是相互影响的

7.Repaint(重绘):改变某元素的背景色、边框颜色等不影响它周围的或内部布局的属性,屏幕的一部分要重画,但是元素

集合尺寸没有发生改变

8.有些时候,一次元素发生改变并不会立马Reflow或者Repaint而是会将改变化积累到一定的量在发生变化

Geoko渲染流程图

Webkit渲染流程图

Geoko和Webkit的渲染细节的区别可以参考 这篇博客

转载地址:http://vnlhx.baihongyu.com/

你可能感兴趣的文章
全国计算机二级考级即将开始,你准备好了吗
查看>>
博客求职简历上用javascript做个定位微地图,面试通过
查看>>
美丽的诗句 撩妹首选哦!
查看>>
Vue 2.0 构建单页应用最佳实战
查看>>
JTalk Online:面试官教你快速成为 leader 最欣赏的技术人
查看>>
Java并发编程笔记之FutureTask源码分析
查看>>
使用LeanCloud快速开发一款小程序
查看>>
MMA冠军Rory MacDonald:比特币现金(BCH)是真正的比特币
查看>>
适配器模式
查看>>
[译] 在 Laravel 应用程序之间共享数据库
查看>>
Koa:核心探秘与入坑指北
查看>>
还在用JSON? Google Protocol Buffers 更快更小 (实践篇)
查看>>
探索 vue-spa 全家桶项目,解析配置,目录结构,路由以及状态管理的实现,附源码
查看>>
OpenStack安装(一) KeyStone模块
查看>>
Java锁之ReentrantReadWriteLock
查看>>
这是一个起点,没有终点 . . .
查看>>
更优雅的使用 Parcel 进行前端项目的打包
查看>>
坑系列 --- 重构过程中的过度设计
查看>>
iOS控件 UICollectionView
查看>>
黑狐”木马分析报告
查看>>