重繪: 由于節點(diǎn)的幾何屬性發(fā)生改變或樣式改變,例如元素背景元素,表現為某些元素的外觀(guān)被改變
重繪不定導致重排,但重排定繪導致重繪
如何觸發(fā)重繪和重排?
任何改變用來(lái)構建渲染樹(shù)的信息都會(huì )導致次重排或重繪:
添加、刪除、更DOM節點(diǎn)
通過(guò)display: none隱藏個(gè)DOM節點(diǎn)-觸發(fā)重排和重繪
通過(guò)visibility: hidden隱藏個(gè)DOM節點(diǎn)-只觸發(fā)重繪,因為沒(méi)有幾何變化
移動(dòng)或者給頁(yè)面中的DOM節點(diǎn)添加動(dòng)畫(huà)
添加個(gè)樣式表,調整樣式屬性
用戶(hù)行為,例如調整窗口大小,改變字號,或者滾動(dòng)。
如何避免重繪或重排?
集中改變樣式:比如使用class的方式來(lái)集中改變樣式
使用document.createDocumentFragment():我們可以通過(guò)createDocumentFragment創(chuàng )建個(gè)游離于DOM樹(shù)之外的節點(diǎn),然在此節點(diǎn)上批量操作,插入DOM樹(shù)中,因此只觸發(fā)次重排
提升為合成層
將元素提升為合成層有以下優(yōu)點(diǎn):
合成層的位圖,會(huì )交由 GPU 合成,比 CPU 處理要快
當需要repaint 時(shí),只需要 repaint 本身,不會(huì )影響到其他的層
對于 transform 和 opacity 效果,不會(huì )觸發(fā) layout 和 paint
本文的內容是由濟南網(wǎng)絡(luò )公司給您提供,我們專(zhuān)注客戶(hù)需求,不斷的發(fā)展,為客戶(hù)提供更多的服務(wù),詳情可參考我們的網(wǎng)站:http://www.hfjtr.cn
本文的內容是由濟南網(wǎng)絡(luò )公司給您提供,我們專(zhuān)注客戶(hù)需求,不斷的發(fā)展,為客戶(hù)提供更多的服務(wù),詳情可參考我們的網(wǎng)站:http://www.hfjtr.cn