瀏覽器執(zhí)行渲染的順序是自上而下的
遇到link script等會(huì)暫停解析,將控制權(quán)交給JavaScript 解析,執(zhí)行完畢之后再交給瀏覽器渲染引擎,所以script寫到body標(biāo)簽內(nèi)靠后比較好,因?yàn)镴avaScript 會(huì)操作html元素, 如果在body加載完之前寫JavaScript 會(huì)造成JavaScript 找不到頁(yè)面元素
一個(gè)html文件是這樣渲染的
1、加載html
2、解析器解析html
3、創(chuàng)建dom樹 加載css (加載完之后才能向下執(zhí)行)
4、解析css 將css作用于dom節(jié)點(diǎn)上(結(jié)合渲染到界面上)
5、有個(gè)img引用了一張圖片 怎么辦,向服務(wù)器發(fā)起請(qǐng)求,不用等,我們繼續(xù)向下執(zhí)行
6、服務(wù)器返回圖片時(shí)候,瀏覽器界面img下面已經(jīng)渲染了一些內(nèi)容了,這時(shí)候會(huì)影響后面段落的排布,瀏覽器就需要重新渲染這部分代碼
7、此時(shí)才會(huì)出現(xiàn)界面
所以 css加載過慢會(huì)阻塞頁(yè)面的渲染,就是我們所說的白屏現(xiàn)象
如果自上而下遇到j(luò)s文件,瀏覽器會(huì)啟用單獨(dú)連接進(jìn)行下載
如果js操作了已經(jīng)渲染完成的元素,那么瀏覽器不得不重新渲染這段代碼