CSSOM樹和DOM樹鏈接在一塊兒造成一個render tree,渲染樹用來計算可見元素的佈局而且做爲將像素渲染到屏幕上的過程的輸入。html
第一步是結合DOM樹和CSSOM樹造成「render tree」,渲染樹用來描述全部可見的DOM內容,而且將CSSOM樣式信息附加到節點上。web
爲了造成渲染樹,瀏覽器大體作的事情有:瀏覽器
最後輸出的是一個render包括了屏幕上可見內容的樣式信息和內容信息。工具
咱們知道了哪些元素應該被顯示以及元素的樣式,可是咱們尚未計算元素在設備中的確切的位置和大小——這是「佈局」階段,一樣也被叫作「reflow」。佈局
<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Critial Path: Hello world!</title> </head> <body> <div style="width: 50%"> <div style="width: 50%">Hello world!</div> </div> </body> </html>
上面的頁面展現了兩個div:第一個div是整個視圖的一半,第二個div是父親寬度的一半——也就是說是整個視圖的25%。優化
佈局的輸出是「盒子模型」,而且將相對定位轉化成屏幕上的絕對像素。google
最後,咱們只差將render tree上的全部節點轉化成屏幕上的確切像素——這個步驟一般被稱爲「painting」或者「rasterizing」。spa
每一個步驟都要花費一些時間,谷歌瀏覽器開封工具爲咱們描述了一些步驟所花費的時間:code
顯示構造render tree以及佈局和paint的時間受到頁面的大小,被應用的樣式和正在運行的設備影響。orm
頁面越大,瀏覽器將要作更多工做;樣式越複雜,painting階段所花費的時間也越多。
可是,咱們的頁面完成了!WOOOO!
讓咱們快速的瀏覽下瀏覽器所作的事情:
雖然咱們的頁面很簡單,可是它進行了大量的工做!下一章咱們討論怎樣對渲染進行優化。