瀏覽器渲染原理

冰凉小手發表於2024-03-20

之前頭條面試被問到,雖然不是崗位相關的,但是還是想作為常識瞭解下。這裡對這部分內容進行一個記錄、梳理和總結。

· 首先說一下什麼是瀏覽器渲染引擎。瀏覽器渲染引擎是渲染出瀏覽器展示的內容的。預設請情況下,瀏覽器渲染引擎可以顯

示 HTML、XML文件以及圖片。如果需要顯示別的內容,比如現在瀏覽器都可以直接開啟PDF檔案,這些功能不是瀏覽器原生

的,是在瀏覽 器中安裝了PDF閱讀器的外掛做到顯示PDF檔案的。本文主要總結渲染引擎最主要的用途——顯示應用了CSS之

後的html及圖片。

目前主流的瀏覽器Chrome和Firefox都是基於兩種渲染引擎構建的。Firefox使用Geoko(Mozilla自主研發的渲染引擎),

Chrome使用的是Webkit。

渲染主流程

·首先獲得請求的文件內容,以8K分塊方式完成。

·解析HTML構建DOM樹-->構建Render樹-->佈局Render樹-->繪製Render樹

注:

1.DOM樹:瀏覽器將HTML解析成樹形的資料結構

2.CSS Rule 樹:瀏覽器將CSS解析成樹形的資料結構

3.Render 樹:將CSSOM和DOM合併成Render樹

4.Layout:有了Render 樹以後,瀏覽器已經能知道網頁中有哪些節點、各個節點的CSS定義以及從屬關係,從而計算出每個

節點在螢幕中的位置

5.Painting:根基算出來的規則,通過顯示卡把內容畫在螢幕上

6.Reflow(迴流):瀏覽器發現某個部分發生了點變化影響了佈局,需要倒回去重新渲染。Reflow會從HTML的root frame開始

往下遞迴,依次計算各個幾何點的尺寸和位置(Reflow幾乎無法避免)。介面上樹狀目錄的摺疊和展開(元素的顯示和隱

藏)等,都會引起Reflow。滑鼠滑過、點選等行為引起了頁面上某些元素的變化,都會引起整個頁面重新渲染。瀏覽器會

Reflow哪些程式碼,是無法估計的,一般都是相互影響的

7.Repaint(重繪):改變某元素的背景色、邊框顏色等不影響它周圍的或內部佈局的屬性,螢幕的一部分要重畫,但是元素

集合尺寸沒有發生改變

8.有些時候,一次元素髮生改變並不會立馬Reflow或者Repaint而是會將改變化積累到一定的量在發生變化

Geoko渲染流程圖

瀏覽器渲染原理

Webkit渲染流程圖

瀏覽器渲染原理

Geoko和Webkit的渲染細節的區別可以參考 www.cnblogs.com/slly/p/6640… 這篇部落格

相關文章