鍍金池/ 問(wèn)答/HTML/ 操作canvas 會(huì)不會(huì)導(dǎo)致頁(yè)面reflow?

操作canvas 會(huì)不會(huì)導(dǎo)致頁(yè)面reflow?

如題,一個(gè)固定大小、位置的canvas,對(duì)其頻繁的繪制,會(huì)不會(huì)觸發(fā)頁(yè)面的reflow?

回答
編輯回答
撥弦

只會(huì)重繪,不會(huì)回流

2017年8月26日 00:56
編輯回答
壞脾滊

當(dāng)render tree中的一部分因?yàn)樵氐囊?guī)模尺寸,布局,隱藏等改變而需要重新構(gòu)建。這就稱(chēng)為回流(reflow)。每個(gè)頁(yè)面至少需要一次
回流,就是在頁(yè)面在第一次加載的時(shí)候。在回流的時(shí)候,瀏覽器會(huì)使渲染樹(shù)中受到影響的部分失效,并重現(xiàn)構(gòu)建這部分渲染樹(shù),完成回流后,瀏覽
器會(huì)重新繪制受影響部分到屏幕中,稱(chēng)為重繪。
當(dāng)render tree中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀,風(fēng)格,而不會(huì)影響布局的,比如background-color。則就叫
稱(chēng)為重繪。
回流必將引起重繪,而重繪不一定引起回流。

2017年8月14日 01:45
編輯回答
不舍棄

謝邀!
首先肯定不會(huì)引起頁(yè)面回流。至于頁(yè)面重繪,個(gè)人感覺(jué)canvas也不會(huì)引起,理由重繪和回流都是相對(duì)于render tree上的元素而言的,而canvas并未對(duì)元素做任何更改,只會(huì)引起canvas畫(huà)布的重繪(關(guān)于頁(yè)面重繪理由有待調(diào)研)。

2018年3月8日 23:24