成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

理解瀏覽器重繪和回流

系統(tǒng) 瀏覽器
平時我們應(yīng)該盡量避免頻繁一次性修改大量 DOM。好在我們平常使用類似 Vue 和 React 的框架,能夠通過對比新舊虛擬 DOM 減少對真實 DOM 的操作,將 GPU 密集轉(zhuǎn)移到了 CPU 密集,也算各有利弊吧。

大家好,我是前端西瓜哥。今天帶大家理解瀏覽器的重繪和回流。

瀏覽器渲染過程

圖片

我們先簡單了解一些瀏覽器是怎么渲染頁面的。

進入頁面時會請求一個 HTML,HTML 會被解析為 DOM(文檔對象模型) 樹,其根節(jié)點為 documentElement,也就是 <html>。

然后請求 CSS (層疊樣式表)文件。

CSS 來源很豐富,有瀏覽器自己的兜底樣式(User-Agent stylesheets)、通過 link 或 @import 導(dǎo)入的各種外部樣式、style 寫的內(nèi)嵌樣式、以及在標(biāo)簽上基于 style 屬性的內(nèi)聯(lián)樣式。

加載完后就會解析它們,會根據(jù)繼承規(guī)則、層疊規(guī)則合并成一個 CSSOM 樹,該樹表示特定選擇器嵌套下的最終樣式。

最后將 DOM 和 CSSOM 組合,生成渲染樹(render)。

渲染樹會將不可見標(biāo)簽丟棄掉,比如像 <head>  僅承載信息不表示結(jié)構(gòu)的標(biāo)簽,或是設(shè)置了 display: none 的元素。這里的每個節(jié)點都是一個盒子(box),應(yīng)用盒子模型,有它們各自的 width、padding、margin 等元素。

渲染樹生成后,先是會計算 “布局”,然后分層,最后進行柵格化(渲染)。

重繪(repaint)

重繪,就是重新繪制。發(fā)生了不改變元素物理信息的情況下只會進行重繪。比如將元素的背景色修改了,就要將元素的盒子做一個重新渲染。

重繪不會改變頁面的布局,只是對局部區(qū)域重新渲染,一般來說不會導(dǎo)致嚴重的性能問題。

重排(reflow)

重排,就是重新排布。

當(dāng)元素的物理信息發(fā)生變化時,其后的元素就會改變位置,此時就要重新進行布局,計算元素的物理信息。

比如修改元素的高度,將元素設(shè)置為 display: none; 等操作會導(dǎo)致重排。

下面是維基百科的頁面重排的可視化展示:

圖片

如何避免重繪重排

  1. 減少 DOM 操作。像是 Vue 和 React 通過虛擬 DOM 找出不同,以減少更新 DOM 的操作;
  2. 盡量將要添加的元素都生成好,再一次性添加到文檔流中,而不是一個個加上去;
  3. 緩存好要用的布局信息。對于同時調(diào)用多次修改 DOM 的 API 操作,瀏覽器是有優(yōu)化的,會將這些操作緩存起來,然后一次性更新。但如果在這過程中訪問了布局相關(guān)信息(比如 scrollHeight、getBoundingClientRect)時,就會強制進行重渲染去獲取最新布局數(shù)據(jù);
  4. 將經(jīng)常變化的元素放到新的層。通過 transform 或絕對定位產(chǎn)生新的渲染層,防止影響文檔流;

結(jié)尾

平時我們應(yīng)該盡量避免頻繁一次性修改大量 DOM。好在我們平常使用類似 Vue 和 React 的框架,能夠通過對比新舊虛擬 DOM 減少對真實 DOM 的操作,將 GPU 密集轉(zhuǎn)移到了 CPU 密集,也算各有利弊吧。

責(zé)任編輯:姜華 來源: 前端西瓜哥
相關(guān)推薦

2019-01-16 14:50:19

回流重繪前端

2013-11-20 14:25:45

瀏覽器重繪

2013-08-27 14:23:18

瀏覽器重繪

2021-07-26 06:57:58

重繪回流前端

2010-09-08 09:59:46

JavaScriptDOM操作

2017-03-08 08:31:48

瀏覽器渲染路徑

2012-08-28 14:23:35

傲游瀏覽器

2011-04-25 10:11:57

高性能web開發(fā)

2013-11-05 16:32:18

搜狗瀏覽器安全漏洞

2013-11-20 14:09:37

重繪重排瀏覽器

2020-12-23 07:37:17

瀏覽器HTML DOM0

2021-07-22 09:55:28

瀏覽器前端緩存

2022-03-16 09:02:46

渲染路徑瀏覽器重排和重繪

2020-01-18 15:04:08

微軟瀏覽器Google

2012-03-20 11:41:18

海豚瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動瀏覽器

2012-03-20 11:07:08

2021-01-27 11:01:21

密碼保護工具微軟瀏覽器

2012-06-21 15:38:02

獵豹瀏覽器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 三区四区在线观看 | 色爱综合网 | 亚洲视频一区 | 在线国产小视频 | 久草在线中文888 | 高清久久久 | 中文字幕第一页在线 | 久久久久久免费看 | 91原创视频 | 台湾a级理论片在线观看 | 国产精品视频不卡 | 久久精品超碰 | 欧美日韩亚洲一区 | 成人蜜桃av | 中文字幕一区在线观看视频 | 久久国 | 男人天堂社区 | 久久黄色| 天堂在线中文字幕 | 成人精品福利 | 老外几下就让我高潮了 | 久久国产精品网 | 精品久久精品 | 欧美在线播放一区 | 国产伦精品一区二区三区在线 | 在线视频一区二区三区 | 天天插天天射天天干 | 国产一区欧美 | 在线观看第一页 | 伊人久久国产 | 女人毛片a毛片久久人人 | 精品国产一区二区三区日日嗨 | 色综合久久久久 | 国产精品毛片av | 欧美性生活一区二区三区 | 精品国产久 | 日韩在线视频一区 | 二区欧美 | 夜夜摸夜夜操 | av一级毛片 | 伊人春色成人网 |