今天要來介紹關於瀏覽器是怎麼將程式轉換為網頁內容。
瀏覽器在將 HTML、CSS、JavaScript 轉換為我們目前看到的網頁內容,並顯示在螢幕上。這樣的過程稱為 渲染流水線
,以下為渲染步驟:
構建 DOM樹
:
HTML
文檔DOM
(文檔對象模型)的樹狀結構
構建 CSSOM樹
:
CSS
文件CSSOM
(CSS對象模型)的樹狀結構
合併 DOM 和 CSSOM :瀏覽器將 DOM樹
和 CSSOM樹
合併成一個結構。
渲染樹
(Render Tree)
佈局(Layout)
:瀏覽器根據 渲染樹
計算每個元素在頁面上的位置和大小。
繪製(Painting)
:根據計算的位置和大小,瀏覽器開始繪製每個元素。
合成(Compositing)
:瀏覽器將所有繪製的元素組合在一起,建立我們所看見的畫面。
圖層(layers)
的概念來加速這一過程,這樣在動畫和滾動等情況下可以更高效地進行合成。重排(Reflow)
和 重繪(Repaint)
:如果某個元素的樣式發生變化,瀏覽器將需要重新執行
重排(Reflow)
:重新執行 佈局(Layout)
,重新渲染的步驟為:
重繪(Repaint)
:重新執行 繪製(Painting)
,重新渲染的步驟為:
因為渲染的順序(佈局 -> 繪製 -> 合成)是固定的,因此我們可以歸納出, 重排必定重繪,但重繪不會重排
。