关于前端:白屏FOUC如何形成以及避免

5次阅读

共计 412 个字符,预计需要花费 2 分钟才能阅读完成。

白屏

  • 阻塞解析和阻塞渲染都会引起白屏, 这是因为渲染树合成须要 DOM 和 CSSOM.
  • 咱们晓得 CSS 加载是通过 link,link 加载慢影响了渲染树的合成.(阻塞渲染)
  • 而 JS 的加载和执行会阻止 html 解析成 DOM, 同样影响了渲染树的合成 (阻塞解析)

FOUC

  • 这是啥? (flash of unstyle content) 无款式内容闪动.
  • 造成起因是 link 没有放入 head 标签中, 在 body 的 html 代码的两头或者下方.
  • 页面渲染之后读取 link,Reflow 重流以及 Repaint 重绘.
  • 说白了还是 css 加载慢, 这就是 FOUC 的造成起因

优化

  • 避免白屏以及 FOUC 能够应用 loading. 进入页面先看到 loading, 加载完 css 和 js 再展现页面内容.
  • js 能够应用异步加载.

JS 异步加载

  • 给 script 标签增加 async 与 defer 异步加载 js.
  • async 增加之后, 并行申请 JS, 谁的申请先回来, 加载谁.
  • defer 增加之后, 同样是异步. 依照执行程序加载.
正文完
 0