進(jìn)階任務(wù)1

1、CSS和JS在網(wǎng)頁中的放置順序是怎樣的?

css樣式放在head中。
js放置在body標(biāo)簽內(nèi)的最后,script標(biāo)簽內(nèi)。外鏈用<script src=""></script>,內(nèi)部的用<script></script>

 <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>標(biāo)題</title>
            <link href="index.css" rel="stylesheet">
        </head>
        <body>
            <script src="index.js"></script>
        </body>
    </html>

2、白屏問題

解答:如果把樣式放在底部,對(duì)于IE瀏覽器,在某些場景下(新窗口打開,刷新等)頁面會(huì)出現(xiàn)白屏,而不是內(nèi)容逐步展現(xiàn)
如果使用 @import 標(biāo)簽,即使 CSS 放入 link, 并且放在頭部,也可能出現(xiàn)白屏。
因?yàn)槟_本會(huì)阻塞后面內(nèi)容的呈現(xiàn)和其后組件的下載
對(duì)于圖片和CSS,在加載時(shí)會(huì)并發(fā)加載(如一個(gè)域名下同時(shí)加載兩個(gè)文件)。但在加載JavaScript 時(shí),會(huì)禁用并發(fā),并且阻止其他內(nèi)容的下載。所以把JavaScript放入頁面頂部也會(huì)導(dǎo)致白屏現(xiàn)象。

關(guān)于白屏,其實(shí)是因?yàn)闉g覽器在渲染的時(shí)候請(qǐng)求時(shí)間過長導(dǎo)致的,比如Chrome的渲染流程大致是HTML-->Dom-->Css-->Cssom-->Render Tree-->進(jìn)行計(jì)算-->painting最終才是我們看到的網(wǎng)頁界面,但是如果你是在一些國外的網(wǎng)站,或者被墻的地方進(jìn)行反問,瀏覽器就回一直現(xiàn)實(shí)它的加載動(dòng)作而沒有最終頁面,也就網(wǎng)頁響應(yīng)時(shí)間過長而導(dǎo)致的白屏,另一種情況就是當(dāng)我門使用@import(),屬性的時(shí)候也可能導(dǎo)致瀏覽器渲染不及時(shí),又或者我們把標(biāo)簽放在了body的底部位置,都可能導(dǎo)致不及時(shí)的現(xiàn)象.

3、FOUC無樣式內(nèi)容閃爍

FOUC無樣式內(nèi)容閃爍如果把樣式放在底部,對(duì)于IE瀏覽器,在某些場景下(點(diǎn)擊鏈接,輸入U(xiǎn)RL,使用書簽進(jìn)入等),會(huì)出現(xiàn)FOUC現(xiàn)象(逐步加載無樣式的內(nèi)容,等CSS加載后頁面突然展現(xiàn)樣式).對(duì)于Firefox會(huì)一直表現(xiàn)出 FOUC。

4、async和defer的作用是什么?有什么區(qū)別

答:首先,如果不使用async和defer name瀏覽器的當(dāng)加載到scrpit標(biāo)簽的時(shí)候會(huì)重上到下進(jìn)行加載,并在加載DOM的內(nèi)容之前進(jìn)行加載.也就是說不等待后續(xù)載入的文檔元素,讀到就加載并執(zhí)行。
有 async,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進(jìn)行(異步).async不保證順序
有 defer,如果給script標(biāo)簽添加了defer屬性,即使js放在head里面,它也會(huì)在HTML頁面解析完畢之后再執(zhí)行,也就是類似于把這個(gè)js放在了頁面底部。簡單來說就是等頁面的html和css加載完畢之后再加載js。 defer腳本延遲到文檔解析和顯示后執(zhí)行,有順序

5、簡述網(wǎng)頁的渲染機(jī)制

1.解析HTML標(biāo)簽,構(gòu)建DOM樹。
2.解析CSS標(biāo)簽,構(gòu)建CSSOM樹。
3.把DOM和CSSOM組合成渲染樹(render tree)。
4.在渲染樹的基礎(chǔ)上進(jìn)行布局,計(jì)算每個(gè)節(jié)點(diǎn)的幾何結(jié)構(gòu)。
5.把每個(gè)節(jié)點(diǎn)繪制到屏幕上(painting)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容