用户输入url地址,浏览器依据域名寻觅IP地址
浏览器向服务器发送http恳求,假如服务器段回来以301之类的重定向,浏览器依据相应头中的location再次发送恳求
服务器端承受恳求,处理恳求生成html代码,回来给浏览器,这时的html页面代码可能是通过紧缩的
浏览器接收服务器呼应成果,假如有紧缩则首先进行解压处理,紧接着即是页面解析烘托
  解析烘托该进程首要分为以下进程:

解析HTML
构建DOM树
DOM树与CSS款式进行附着结构出现树
规划
制作
解析与构建DOM树

  前两步咱们放在一同评论,浏览器的实际作业也是将他们放在一同进行的。关于HTML浏览器有专门的html解析器来解析HTML,并在解析的进程中构建DOM树。在这里咱们评论两种DOM元素的解析,即款式(link、style)与脚本文件(script)。因为浏览器选用自上而下的方法解析,在遇到这两种元素时都会堵塞浏览器的解析,

直到外部资本加载并解析或履行结束后才会继续向下解析html。关于款式与脚本的先后顺序相同也会影响到浏览器的解析进程,究其原因首要在于:script脚本履行进程中可能会修改html界面(如document.write函数);DOM节点的CSS款式会影响js的履行成果。在我的测验中得到以下四条结论:

 1)外部款式会堵塞后续脚本履行,直到外部款式加载并解析结束。

 

  2)外部款式不会堵塞后续外部脚本的加载,但会堵塞外部脚本的履行。

 主页代码
 外部脚本
  从瀑布图中咱们能够看到,外部脚本与外部款式是并行加载,但直到外部款式加载结束,外部脚本才开端履行

  3)假如后续外部脚本含有async特点(IE下为defer),则外部款式不会堵塞该脚本的加载与履行

 
  从瀑布图中能够看到外部脚本的加载与履行并不受link的堵塞

  4)关于动态创立的link标签不会堵塞这以后动态创立的script的加载与履行,

不论script标签是否具有async特点,但关于别的非动态创立的script,以上三条结论仍适用

HTML解析结束后,开端构建出现树RenderTree,这一步的首要作业在于将css款式应用到DOM节点上,WebKit内核将这一进程称为附着,别的浏览器有纷歧样的概念。对前端工程师而言这个进程会涉及到CSS层叠疑问。

  首先将依据款式主要性排序,由低到高依次为:

浏览器声明
用户一般声明
作者一般声明
作者主要声明
用户主要声明
  关于同一主要等级,则是依据CSS选择符的特指度来断定优先级;一条款式声明的特指度由以下四个有些决议:S-I-C-E

声明来自内联的style特点则 S+1;
声明中含有id特点则 I+1;
声明中含有类、伪类、特点选择器则 C+1;
生命中含有元素、伪元素选择器则 E+1;
  特指度的对比类似于两个字符串之间对比巨细。

  出现树的每一个节点即为与其相对应的DOM节点的CSS框,框的类型与DOM节点的display特点有关,block元素生成block框,inline元素生成inline框。每一个出现树节点都有与之相对应的DOM节点,但DOM节点纷歧定有与之相对应的出现树节点,比方display特点为none的DOM节点,并且出现树节点在出现树中的方位与他们在DOM树中的方位纷歧定相同,比方float与肯定定位元素。

html渲染过程的更多相关文章

  1. spring mvc DispatcherServlet详解之四---视图渲染过程

    整个spring mvc的架构如下图所示: 现在来讲解DispatcherServletDispatcherServlet的最后一步:视图渲染.视图渲染的过程是在获取到ModelAndView后的过程 ...

  2. iOS 事件处理机制与图像渲染过程(转)

    iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和 NSTimer iOS 渲染过程 ...

  3. iOS 事件处理机制与图像渲染过程

    Peter在开发公众号功能时触发了一个bug,导致群发错误.对此我们深表歉意,并果断开除了Peter.以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS ...

  4. 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  5. SpringMVC DispatcherServlet-------视图渲染过程

    整个spring mvc的架构如下图所示: 现在来讲解DispatcherServletDispatcherServlet的最后一步:视图渲染.视图渲染的过程是在获取到ModelAndView后的过程 ...

  6. WebKit 渲染过程

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 Webkit渲染过程 ...

  7. 二、Vue 页面渲染过程

    前言 上篇博文我们依葫芦画瓢已经将hello world 展现在界面上啦,但是是不是感觉新虚虚的,总觉得这么多文件,项目怎么就启动起来了呢?怎么访问到8080 端口就能进入到我们的首页呢.整个的流程是 ...

  8. 《Webkit技术内幕》之页面渲染过程

    文章同步到github<Webkit技术内幕>之页面渲染过程 最近拜读了传说中的<Webkit技术内幕>一书,有很大收获,尤其是对页面渲染有了较深的认识.由于功力有限,而且书中 ...

  9. Vue是如何渲染页面的,渲染过程以及原理代码

    Vue是如何渲染页面的,渲染过程以及原理代码:https://www.cnblogs.com/ypinchina/p/7238402.html

  10. HTML渲染过程详解

    无意中看到寒冬关于前端的九个问题,细细想来我也只是对第一.二.九问有所了解,正好也趁着这个机会梳理一下自己的知识体系.由于本人对http协议以及dns对url的解析问题并不了解,所以这里之探讨url请 ...

随机推荐

  1. Java 数值类型以及计算

    前段时候写了一个对外提供的接口,其中有一个数值校验的计算.在测试的过程中发现5.6-1.6 != 4,在反复的测试过程中发现double类型的数值为有精度丢失的现象,看来还是基础知识不牢固,所以就在网 ...

  2. KoaHub.JS基于Node.js开发的mysql的node.js驱动程序代码

    mysql A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 10 ...

  3. 本地化 NSLocal

    本地化封装了关于语言,文化以及技术约定和规范的信息.用于提供于用户所处地域相关的定制化信息和首选项信息的设置.通过获取用户的本地化信息设置,我们可以为用户提供更加友好人性化的界面设置,包括更改更改应用 ...

  4. C风格字符串和C++ string 对象赋值操作的性能比较

    <<C++ Primer>> 第四版 Exercise Section 4.3.1 部分Exercise 4.2.9 习题如下: 在自己本机执行如下程序,记录程序执行时间: # ...

  5. 持续集成接口自动化-jmeter+ant+jenkins(一)

    ant 批量执行Jmeter 一.环境准备 1.JDK环境:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.A ...

  6. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  7. JavaGUI版本销售管理系统

    不知不觉中,本科阶段已经走过两个年头,诸多感慨,诸多向往,周遭的人和事物在不断的改变着,自己的目标也在不断改变,总之,世界一直在快速的发生着变化,快到我们无法捕捉,总的来说,过得很潇洒,就等考上研究生 ...

  8. self-question

    需要即刻提升的几大能力: 1.重装系统和安装各种软件 2.自学能力,多从实际案例中总结,多归纳反思 3.拓展人际关系,和别人沟通交流 4.遇到困难迎刃而上,而不是回避退缩

  9. cuda编程学习3——VectorSum

    这个程序是把两个向量相加 add<<<N,1>>>(dev_a,dev_b,dev_c);//<N,1>,第一个参数N代表block的数量,第二个参数1 ...

  10. angular element()

    使用angular.element()获取一个dom的方法. 1.可以使用jquery的选择器 2.可以使用javascript的原生的的查找元素的方法 下面是angular.element()提供的 ...