美文网首页
解析白屏和FOUC

解析白屏和FOUC

作者: 饥人谷_罗丹 | 来源:发表于2017-06-08 23:00 被阅读0次

1.到底什么是白屏什么是FOUC

白屏与无样式内容闪烁(FOUC)是因为不同浏览器加载与显示页面的机制不同而造成的。

  • FOUC:一些浏览器例如firefox,页面加载时,页面以样式A进行渲染,页面加载完成时,页面突然以样式B进行渲染,所以导致页面出现页面内容闪烁。
  • 白屏:一些浏览器例如chrome,他的加载和渲染机制是等css全部加载解析完后再渲染展示页面,而这个等待的时间就为白屏。

2.为什么会出现白屏和FOUC

  • FOUC

firefox浏览器:当我们输入网址按回车后浏览器会向服务端发送请求,然后服务端发送页面给浏览器,浏览器边下载页面边解析边渲染。下面我们解剖一下边下载页面边解析边渲染的过程:

  1. 边下载边解析就是边下载html边构建DOM Tree;
  2. 浏览器会以浏览器内置样式(user agent stylesheet)来解析CSSOM Tree;
  3. DOM Tree + CSSOM Tree 构建出 渲染树(Render Tree),然后页面内容渲染出来;
  4. 当解析到内联样式(inline-stylesheet)和内部样式(internal stylesheet)时,马上刷新DOM Tree + CSSOM Tree + 新的CSSOM 会发生变化引起 Render Tree变化。
  5. 当解析到外部链接样式(external stylesheet)是会就先加载,然后如同inline-stylesheet和internal stylesheet那样解析和刷新CSSOM Tree和Render Tree了。

上述步骤5中由于样式文件存在下载这个延时不确定的阶段,因此网络环境不好或样式资源体积大的情况下我们可以看到样式闪烁明显。

  • 白屏

chorme浏览器:当我们输入网址按回车后浏览器会向服务端发送请求,然后服务端发送页面给浏览器,浏览器下载完成后页面解析渲染。下面我们解剖一下边下载页面边解析边渲染的过程:

  1. 根据来自服务器端的 HTML 代码形成DOM Tree;
  2. 加载并解析全部样式,形成 CSSOM Tree;
  3. 在DOM Tree + CSSOM Tree构建一棵由一组待生成渲染的渲染树(在 Webkit 中这些对象被称为渲染器或渲染对象,而在 Gecko 中称之为“frame”。)渲染树反映了文档对象模型的结构,但是不包含诸如 <head> 标签或含有display:none属性的不可见元素。在渲染树中,每一段文本字符串都表现为独立的渲染器。每一个渲染对象都包含与之对应的 DOM 对象,或者文本块,还加上计算过的样式。换言之,渲染树是一个文档对象模型的直观展示。
  4. 对渲染树上的每个元素,计算它的坐标,称之为布局。浏览器采用一种流方法,布局一个元素只需通过一次,但是表格元素需要通过多次。
  5. 最后,渲染树上的元素最终展示在浏览器里,这一过程称为“painting”。

上述步骤5中由于样式文件存在下载这个延时不确定的阶段,因此网络环境不好或样式资源体积大的情况下我们等待的时间就为白屏。

相关文章

  • 解析白屏和FOUC

    1.到底什么是白屏什么是FOUC 白屏与无样式内容闪烁(FOUC)是因为不同浏览器加载与显示页面的机制不同而造成的...

  • 白屏和FOUC 效果演示

    我通过以下语句将CSS文件的加载时间拉长,来演示白屏和FOUC现象: 白屏效果 FOUC效果

  • 浏览器加载

    白屏和 FOUC FOUC指无样式内容闪烁,白屏指页面会出现白屏; 它们主要是由于不同浏览器处理,对于某些场景,处...

  • 你理解的白屏和FOUC

    解释白屏和FOUC白屏:首先要了解一下chrome和IE浏览器的渲染机制。1.解析HTML标签构建DOM树;2.解...

  • 关于白屏和FOUC现象

    解释白屏和FOUC白屏:首先要了解一下chrome和IE浏览器的渲染机制。1.解析HTML标签构建DOM树;2.解...

  • 白屏和FOUC

    白屏和FOUC(无样式内容闪烁)均是由于不同的浏览器渲染机制导致的问题。白屏主要发生在IE上,FOUC主要发生在F...

  • 白屏和FOUC

    主要内容: CSS和JS在网页中的放置顺序、白屏和FOUC、async和defer以及网页的渲染机制。 CSS和...

  • 白屏和FOUC

    1.浏览器渲染机制 解释这两种现象之前,我们首先要了解一下浏览器一般的渲染顺序,以CSS用link写在head中为...

  • 白屏和fouc

    浏览器的白屏与无样式内容闪烁(Flash of unstyled content),是由于浏览器加载与显示页面方式...

  • 白屏和FOUC

    白屏问题: 如果把样式放在底部,对于IE浏览器,chrome等(css全部加载后再呈现,有可能等待长),在某些场景...

网友评论

      本文标题:解析白屏和FOUC

      本文链接:https://www.haomeiwen.com/subject/ruptqxtx.html