美文网首页
认识JS网页渲染

认识JS网页渲染

作者: NathanYangcn | 来源:发表于2016-12-27 20:14 被阅读0次

1. CSS和JS在网页中的放置顺序

CSS和JS可以放置在页面上的任意位置,但为了解决白屏和无样式闪烁问题,推荐放置位置为:

  • CSS放置head>style标签内
  • JS放置body闭合标签前的script标签内

2.简述网页的渲染机制

  • 解析HTML,构建DOM树
  • 解析CSS,构建CSSOM树
  • 组合DOM和CSSOM,构建渲染树
  • 在渲染树的基础上进行布局,计算每个节点的几何结构
  • 把页面按规则呈现到屏幕上
    整个流程可参考如下图片:
构建渲染树——来源自网络

3.解释白屏和FOUC

不同品牌的浏览器处理解析HTML和CSS的方式不一样,这就会造成不同的问题

  • 白屏
    一些浏览器需要按照网页渲染顺序一步一步执行,最终一次性呈现所有内容。
    所以构建渲染树之前的文件准备时间过长或被阻塞,导致浏览器无法破译代码,屏幕上没有可以被呈现的内容,就会出现白屏问题

  • 两种情况会触发白屏:

  • 1.CSS文件准备时间过长,这段时间内没有构建渲染树的原料——CSSOM,还需等待CSS代码解析完毕
    ⊙ 此时CSS代码可能位置:CSS样式使用@import标签引入、CSS文件放置代码尾部

  • 2.JS文件阻塞后续代码的加载,导致构建渲染树的原料(DOM和CSSOM)工作被迫中断,此时需要等待JS代码完全被执行完毕
    ⊙ 此时JS代码可能位置:JS文件放置代码头部

  • 无样式闪烁FOUC
    对于一些浏览器,它们并不会严格按照顺序进行页面渲染,它们不会等待完成构建渲染树后再进行统一的一次展示,而是会发生两次展示。
    所以浏览器首先会逐步加载无样式内容,然后突然展示样式

  1. 第一次:解析html代码直接展示破译后的无样式内容,
  2. 第二次:解析完CSS代码后,组合DOM和CSSOM进行构建渲染树,最后展示样式
  3. 当第一次页面会重新排版布局变成第二次页面,所以就会发生页面闪烁之后,内容和样式被同时展示出来
    ⊙ 此时CSS代码可能位置:CSS文件放置代码尾部
本文章著作权归饥人谷_蛮力拳猫和饥人谷所有,转载须说明来源!

相关文章

  • 认识JS网页渲染

    1. CSS和JS在网页中的放置顺序 CSS和JS可以放置在页面上的任意位置,但为了解决白屏和无样式闪烁问题,推荐...

  • JS基础(一)

    css和js的放置位置、白屏和FOUC、async和defer、简述网页的渲染机制、 一、CSS和JS在网页中的放...

  • 浏览器内核及其分类

    内核包括两部分:渲染引擎和js引擎 渲染引擎:获得网页内容加入css,然后展示 ...

  • RequireJS规范

    为什么使用RequireJS 上述多个js文件加载的时候,浏览器会停止网页渲染(JS阻塞浏览器渲染),加载文件越多...

  • 浏览器简述

    浏览器内核差异 浏览器内核主要分成两部分:渲染引擎和JS引擎; 渲染引擎:负责获取网页内容,计算网页显示方式,然后...

  • 初学pyspider跳过的坑

    1、JS问题。使用pyspider抓取一些网页时,如果网页使用JS做渲染,将会遇到抓取不成功的情况,具体的表现就是...

  • 白屏和FOUC

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

  • three.js 实现物体贴图

    在Three.js中,要渲染物体到网页中,我们需要3个组建:场景(scene)、相机(camera)和渲染器(re...

  • Next.js - SSR / SSG / CSR / ISR

    Next.js 提供了多种网页渲染方式,这取决于你的服务应用的场景,包括服务端渲染、客户端渲染、静态生成、增量静态...

  • 浏览器内核和js引擎

    浏览器内核分为两种:渲染引擎和js引擎。 渲染引擎:负责网页内容(html/xml/图像),整理讯息(例如加入cs...

网友评论

      本文标题:认识JS网页渲染

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