CSS和JS在網(wǎng)頁中的放置順序是怎樣的?
css放置于head里,
js放到body的末尾部分 外鏈用<script src=""></script>,內(nèi)部的用<script></script>
解釋白屏和FOUC
白屏和fouc 跟瀏覽器的渲染機(jī)制 有關(guān),不算是bug。白屏是css放到body之后,谷歌瀏覽器會將html的DOM樹和css的 CSSOM樹構(gòu)建好之后,在展現(xiàn)頁面,如果css和html內(nèi)容較多,導(dǎo)致繪制比較慢,就會出現(xiàn)白屏,當(dāng)然@import 和css用link放到head里也會出現(xiàn)白屏,建議將css用link放到head里。
fouc :火狐瀏覽器是將先將html樹構(gòu)建好繪制到頁面,在逐漸加載css,重新繪制一次頁面,直到css加載完畢。
async和defer的作用是什么?有什么區(qū)別
async不保證順序,在加載和渲染的過程中,將和script.js的加載與執(zhí)行,并行執(zhí)行。
defer :腳本延遲到文檔解析和顯示后執(zhí)行,等所有的元素解析完后之后。
簡述網(wǎng)頁的渲染機(jī)制
網(wǎng)頁=HTML(網(wǎng)頁元素內(nèi)容)+css(控制網(wǎng)頁樣式)+JavaScript(操作網(wǎng)頁內(nèi)容),實(shí)現(xiàn)功能或者效果。
瀏覽器渲染:解析HTML標(biāo)簽,構(gòu)建DOM樹, 同時解析CSS標(biāo)簽,構(gòu)建CSSOM樹,把DOM和cssOM組合成渲染書,先解析html標(biāo)簽,然后看css樣式,如果沒有就用默認(rèn)樣式,再去加載body標(biāo)簽,解析對應(yīng)的css標(biāo)簽一次類推,都解析完后,再渲染樹 的基礎(chǔ)上進(jìn)行布局,計算每個節(jié)點(diǎn)的幾何結(jié)構(gòu),,把每個節(jié)點(diǎn)繪制到屏幕上。
