浏览器渲染及注意问题

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

(1)css样式一般是放在head中的,避免加载不了出现白屏 闪烁等问题。
(2)js一般情况下是放在页面的body标签中的最下方,最后加载,避免阻塞其他元素的渲染。
根据实际情况,应用 defer 和 async 使用,可放在顶部

  1. 出现的白屏和FOUC问题

白屏就是在浏览器在打开渲染页面时,由于样式在底部, 没有及时加载到,出现页面空白一片,没有内容展现的情况
白屏不是BUG,而是浏览器机制造成的一种现象
可能出现白屏的问题的情况:

  1. css样式放置在页面的底部.
  2. css文件使用@import 标签,css又放入到link外链
  3. jsf放在页面的顶部,也会导致白屏

FOUC,First Of Unstyle Content ,叫做无样式内容闪烁,
当将样式放在底部,对于IE 浏览器在某些场景下(点击链接、 输入URL、使用书签进入等),逐步加载无样式的内容,等css样式加载后页面“突然”展现样式
FIREFOX火狐 浏览器会经常出现 FOUC
当样式放在页面的底部后,浏览器会出现白屏和闪烁的问题
为了解决这些问题,所以将css样式放在head中

  1. async和defer的作用

正常情况下,在浏览器解析到js文件时, 禁用并发请求,js不能并发请求,并阻塞js脚本后的内容的加载和组件的下载。

作用 都是加载异步,解决了加载js时 对后面渲染的影响,
当前页面加载,不会影响页面的渲染。
js脚本与后续的元素内容 加载并发执行(异步)。

  1. async defer 的区别:
  • <script async src="index.js"></script>
  • async 不保证js顺序,所有的脚本并发加载完就会执行。当并发加载的其他js脚本,虽然位置在其之后,有可能先加载完也先执行了。
  • <script defer src="index.js"></script>
    defer 保证js顺序,js文件在所有元素解析完成后才加载执行
  1. 简述网页的渲染机制

(1) 解析html标签,构造DOM树
(2) 解析css标签,构造CSSOM树
(3)DOM和CSSOM组成渲染树Render Tree;
(4)在渲染树的基础上布局,计算出每个节点的几何结构
(5)把每个节点绘制到屏幕上显示

浏览器渲染的流程图

详细渲染过程
输入URL,浏览器会向服务器发出请求,服务器响应浏览器返回对应的资源,浏览器的HTML解析器就会解析文件,创建DOM树。当解析html标签时,遇到了js或css元素,那么就先解析js或css元素,将控制权交给js或css解析器。解析完成后,HTML解析器再继续解析下面的标签,直到完成整颗DOM树。
DOM树与CSSOM树合并,生成渲染树
根据渲染树计算出各个节点在屏幕中的位置,最后绘制到屏幕显示。

注意区别的一点:
当解析CSS时,请求CSS,然后继续解析下面的元素,而不需要等待request的返回,当request返回后,只需要把返回的内容放入到DOM树中对应的位置就可以了。
但当引用了JS的时候,浏览器发送一个JS request就会一直等待该request的返回。

DOM \ CSSDOM \Render Tree图

渲染机制详解
详解2
DTD相关渲染问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容

  • 1. CSS和JS在网页中的放置顺序是怎样的? css放在head标签内,防止渲染时出现白屏 js放在最后body...
    billa_8f6b阅读 576评论 0 0
  • 简单介绍JavaScript的发展历史 JavaScript因互联网而生,回顾它的历史要从浏览器的历史讲起。 19...
    _Dot912阅读 492评论 0 3
  • 1,CSS和JS在网页中的放置顺序是怎样的? 网站加载的整个完整过程是:1、首先浏览器从服务器接收到html代码,...
    进击的前端_风笑影阅读 310评论 0 0
  • 1、CSS和JS在网页中的放置顺序是怎样的? (1)CSS 对于谷歌浏览器和Safari放在head里或body里...
    徐国军_plus阅读 445评论 0 0
  • CSS和JS在网页中的放置顺序 网站加载的整个完整过程:首先浏览器从服务器接收到html代码,然后开始解析html...
    Joey的企鹅阅读 275评论 1 0