天天看點

前端4-1-5:浏覽器渲染過程

浏覽器渲染過程:

1.解析HTML,生成DOM樹,解析CSS,生成CSSOM樹

2.将DOM樹和CSSOM樹結合,生成渲染樹(Render tree)

3.Layout(回流):根據生成的渲染樹,進行回流,得到節點的幾何資訊

4.Painting(重繪):根據渲染樹以及回流得到的節點,擷取絕對像素

5.Display:将像素發給GPU,展示在頁面上

具體詳細過程:

Web頁面運作在各種各樣的浏覽器當中,浏覽器載入、渲染頁面的速度直接影響着使用者體驗簡單地說,頁面渲染就是浏覽器将html代碼根據CSS定義的規則顯示在浏覽器視窗中的這個過程。

  1. 使用者輸入網址(假設是個html頁面,并且是第一次通路),浏覽器向伺服器送出請求,伺服器傳回html檔案;

  2. 浏覽器開始載入html代碼,發現<head>标簽内有一個<link>标簽引用外部CSS檔案;

  3. 浏覽器又發出CSS檔案的請求,伺服器傳回這個CSS檔案;

  4. 浏覽器繼續載入html中<body>部分的代碼,并且CSS檔案已經拿到手了,可以開始渲染頁面了;

  5. 浏覽器在代碼中發現一個<img>标簽引用了一張圖檔,向伺服器送出請求。此時浏覽器不會等到圖檔下載下傳完,而是繼續渲染後面的代碼;

  6. 伺服器傳回圖檔檔案,由于圖檔占用了一定面積,影響了後面段落的排布,是以浏覽器需要回過頭來重新渲染這部分代碼;

  7. 浏覽器發現了一個包含一行Javascript代碼的<script>标簽,趕快運作它;

  8. Javascript腳本執行了這條語句,它指令浏覽器隐藏掉代碼中的某個(style.display=”none”)。杯具啊,突然就少了這麼一個元素,浏覽器不得不重新渲染這部分代碼;

  9. 終于等到了</html>的到來,浏覽器淚流滿面……

  10. 等等,還沒完,使用者點了一下界面中的“換膚”按鈕,Javascript讓浏覽器換了一下<link>标簽的CSS路徑;

  11. 浏覽器召集了在座的各位<span><ul><li>們,“大夥兒收拾收拾行李,咱得重新來過……”,浏覽器向伺服器請求了新的CSS檔案,重新渲染頁面。