前端性能優化(一)——DOM操作與重繪重排

DOM操作

使用js操作DOM的代價是昂貴的,有一個貼切的比喻,DOM與ECMScript就像兩座小島,而他們之間由一個收費的橋梁連接,ECMScript每次訪問DOM都要“收費”。
所以DOM操作的性能優化有兩點技巧:

  1. 將運算盡量放在ECMScript一端,減少DOM操作
  2. 對DOM對象進行緩存
重繪與重排

當DOM中的元素幾何屬性發生變化時,就會發生重排,重排一定會觸發重繪;當元素只是發生樣式變化時,只會觸發重繪。
重排的代價是非常昂貴的
所以應該盡量避免重排的發生:

  1. 對同一DOM元素的操作盡量寫在一起,最小化重排的次數
  2. 不要在會引起重排的語句中穿插需要返回最新布局信息的語句,比如offsetTop、scrollTop、clientTop、getComputedStyle等
  3. 使用fragment元素,批量操作DOM元素時使之脫離文檔流,操作完之后再一次性加入文檔
  4. 將需要多次觸發重排的元素的position設置為absolute或fixed,以避免觸發其他元素的重排
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容