成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

什么是重繪和重排,它們的區(qū)別是什么?

2022-06-04    分類: 網站建設

重繪:當頁面元素樣式的改變不影響布局時,瀏覽器重新對元素進行更新的過程叫做重繪。

重排:當頁面元素的尺寸、結構、或某些屬性發(fā)生改變時,瀏覽器重新渲染部分或全部文檔的過程叫做重排也叫做回流。


一個頁面由兩部分組成:

DOM:描述該頁面的結構

render:描述 DOM 節(jié)點 (nodes) 在頁面上如何呈現(xiàn)


當 DOM 元素的屬性發(fā)生變化 (如 color) 時, 瀏覽器會通知 render 重新描繪相應的元素, 此過程稱為 repaint。


如果該次變化涉及元素布局 (如 width), 瀏覽器則拋棄原有屬性, 重新計算并把結果傳遞給 render 以重新描繪頁面元素, 此過程稱為 reflow。


這兩個過程是很耗費瀏覽器性能的, 從 IE 系列和 Chrome 渲染頁面速度上的差距即可看出渲染引擎計算對應值和呈現(xiàn)并不一定高效, 而每次對元素的操作都會發(fā)生 repaints 或 reflow, 因此編寫 DOM 交互時如果不注意就會導致頁面性能低下

頁面渲染的過程如下:

1.解析HTML代碼并生成一個 DOM 樹。


2.解析CSS文件,順序為:瀏覽器默認樣式->自定義樣式->頁面內的樣式。


3.生成一個渲染樹(render tree)。這個渲染樹和DOM樹的不同之處在于,它是受樣式影響的。它不包括那些不可見的節(jié)點。


4.當渲染樹生成之后,瀏覽器就會在屏幕上“畫”出所有渲染樹中的節(jié)點。


不管頁面發(fā)生了重繪還是重排,它們都會影響性能(最可怕的是重排 ,應盡量避免)

下列情況會發(fā)生重排

頁面初始渲染

添加/刪除可見DOM元素

改變元素位置

改變元素尺寸(寬、高、內外邊距、邊框等)

改變元素內容(文本或圖片等)

改變窗口尺寸


如何減少重排和重繪(提高性能)


由于回流和重繪會帶來很大的性能開銷,所以在開發(fā)中我們要盡量避免或減少回流和重繪的次數(shù)來提高性能

1.      避免頻繁讀取會引發(fā)回流/重繪的屬性,如果確實需要多次使用,就用一個變量緩存起來。

2.     對具有復雜動畫的元素使用絕對定位,使其脫離文檔流,否則會引起父元素及后續(xù)元素頻繁回流。

3.     要避免頻繁的去操作DOM,可以通過創(chuàng)建documentFragment,完成所有所有DOM操作后,最后再把它添加到文檔中。

4.     避免頻繁操作樣式,最好一次性重寫style屬性,或者將樣式列表定義為class并一次性更改class屬性。


1.分離讀寫操作


var curLeft=div.offsetLeft;


var curTop=div.offsetTop;


div.style.left=curLeft+1+’px’;


div.style.top=curTop+1+’px’;


2.樣式集中改變 ,可以添加一個類,樣式都在類中改變

3.可以使用absolute脫離文檔流。

4.使用 display:none ,不使用 visibility,也不要改變 它的 z-index

5.能用css3實現(xiàn)的就用css3實現(xiàn)。

區(qū)別:

  1. 重繪的性能開銷較低,重排的性能開銷較高;

  2. 回流(重排)一定會觸發(fā)重繪,而重繪不一定會回流(重排)


網頁題目:什么是重繪和重排,它們的區(qū)別是什么?
網站網址:http://jinyejixie.com/news13/163313.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網站排名域名注冊、營銷型網站建設、建站公司、面包屑導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設
惠水县| 耒阳市| 盐津县| 黄骅市| 锡林郭勒盟| 建湖县| 呼伦贝尔市| 博乐市| 江源县| 海伦市| 福安市| 浠水县| 垫江县| 盐源县| 南投县| 阿图什市| 扎赉特旗| 松江区| 兰考县| 甘洛县| 大余县| 盘锦市| 宁陕县| 石城县| 喀什市| 东兴市| 罗山县| 亚东县| 怀集县| 鄂托克旗| 巫山县| 微山县| 玛沁县| 常德市| 濮阳市| 六盘水市| 乳源| 普陀区| 横峰县| 灵宝市| 婺源县|