瀏覽器渲染過程(二)

創(chuàng)建布局樹后恍箭,經(jīng)過布局計算,我們得到了一個需要渲染的所有節(jié)點組成的樹狀結(jié)構(gòu)瞧省,包含計算出的每個節(jié)點的坐標位置扯夭。
下面,就需要去實際地繪制鞍匾。
注:瀏覽器渲染是在瀏覽器渲染進程進行的交洗。其中,瀏覽器渲染進程分為多個線程橡淑。從解析 HTML 和 CSS 到布局計算都是在主線程進行的构拳。

一、分層

我們看到的網(wǎng)頁是二維的梁棠,但事實上置森,為了實現(xiàn)頁面上一些復(fù)雜的效果,瀏覽器會將頁面劃分為不同的圖層符糊,根據(jù)不同屬性的優(yōu)先級凫海,將它們劃分在不同的圖層。
也就是說男娄,我們看到的網(wǎng)頁盐碱,實際上是三維的。
一層層的圖層疊放在一起沪伙,構(gòu)成了我們最終看到的網(wǎng)頁瓮顽。這也是 CSS 叫做層疊樣式表的原因。

在這一階段围橡,輸入的是帶有坐標位置的布局樹暖混,輸出的是圖層樹(layerTree)。

那么翁授,瀏覽器是如何判斷圖層劃分的呢拣播?

  1. 首先晾咪,所有的節(jié)點都直接屬于或間接屬于一個圖層
  2. 瀏覽器會為符合某一些條件的節(jié)點創(chuàng)建圖層

瀏覽器會為哪些節(jié)點創(chuàng)建圖層呢?

  1. 擁有層疊上下文屬性的元素:
    • position元素
    • 設(shè)置透明度的元素
    • 使用 CSS 濾鏡的元素
      等等贮配。谍倦。。泪勒。
  2. 需要剪裁的地方:
    若一段文本的長度超出了它的父容器的大小昼蛀,則文本會被剪裁,這時圆存,渲染引擎會為文字部分單獨創(chuàng)建一個圖層叼旋。
    若出現(xiàn)滾動條,滾動條也會被創(chuàng)建單獨的圖層沦辙。

二夫植、圖層繪制

拿到了圖層樹,需要進行具體的繪制油讯。怎么做呢详民?
先要把每個圖層需要繪制的部分拆分成很多小的繪制指令,然后把這些指令按照順序組成一個待繪制列表
在這一階段陌兑,輸入的是圖層樹沈跨,輸出的是待繪制列表

三、柵格化操作

拆分為繪制指令后诀紊,就要進入真正的繪制工作了。
以上的步驟都是在渲染進程的主線程里進行的隅俘,而真正的繪制工作則是在合成線程里進行的邻奠。
上一步得到的待繪制列表,會被提交到合成線程为居,進行繪制碌宴。

合成線程如何繪制呢?

  1. 首先蒙畴,我們看到的網(wǎng)頁大多很長贰镣,需要拖動滾動條查看。實際上我們看到的網(wǎng)頁膳凝,只是一個視口(viewport)的大小碑隆。
  2. 所以,如果一次性將全部的網(wǎng)頁都繪制了蹬音,會耗費很多資源上煤,因為我一次性看不了那么多
  3. 因此,合成線程將圖層劃分為圖塊著淆,然后按照視口附近的圖塊優(yōu)先生成位圖劫狠。柵格化指將圖塊轉(zhuǎn)換成位圖拴疤。

四、合成和顯示

當所有圖塊都被柵格化独泞,合成線程會發(fā)送指令給瀏覽器進程呐矾。瀏覽器進程會將頁面內(nèi)容繪制到內(nèi)存里,再將內(nèi)存顯示在屏幕上

至此懦砂,就渲染完成了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜒犯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子孕惜,更是在濱河造成了極大的恐慌愧薛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫画,死亡現(xiàn)場離奇詭異毫炉,居然都是意外死亡,警方通過查閱死者的電腦和手機削罩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門瞄勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弥激,你說我怎么就攤上這事进陡。” “怎么了微服?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵趾疚,是天一觀的道長。 經(jīng)常有香客問我以蕴,道長糙麦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任丛肮,我火速辦了婚禮赡磅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宝与。我一直安慰自己焚廊,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布习劫。 她就那樣靜靜地躺著咆瘟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诽里。 梳的紋絲不亂的頭發(fā)上搞疗,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼匿乃。 笑死桩皿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的幢炸。 我是一名探鬼主播泄隔,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宛徊!你這毒婦竟也來了佛嬉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闸天,失蹤者是張志新(化名)和其女友劉穎暖呕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苞氮,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡湾揽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笼吟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片库物。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贷帮,靈堂內(nèi)的尸體忽然破棺而出戚揭,到底是詐尸還是另有隱情,我是刑警寧澤撵枢,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布民晒,位于F島的核電站,受9級特大地震影響锄禽,放射性物質(zhì)發(fā)生泄漏潜必。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一沟绪、第九天 我趴在偏房一處隱蔽的房頂上張望刮便。 院中可真熱鬧空猜,春花似錦绽慈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谆沃,卻和暖如春钝凶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唁影。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工耕陷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掂名,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓哟沫,卻偏偏與公主長得像饺蔑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗜诀,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容