瀏覽器的重繪和重排學習筆記

文檔加載 頁面顯示過程: 解析構建Dom樹 Dom樹 +幾何屬性 構建渲染樹(擁有Dom結構+屬性的樹) 根據渲染樹放置節點 繪製頁面。流式佈局 渲染樹計算只需遍歷一次,table及其內部元素需要多次計算。

重繪:外觀改變(顏色 邊框等) 重排:幾何屬性(長寬高距離等)發生變化,渲染樹重新計算 重繪不一定重排 重排一定重繪

觸發重排的操作:
(1)Dom元素的幾何屬性變化
幾何屬性變化 該節點失效 重新構建渲染樹失效節點 根據新的渲染樹重新繪製該部分。當前元素的重排也可能影響到相關元素的重排。
(2)Dom樹的結構發生變化
增加或者刪除
(3)獲取某些屬性
offsetTop offsetLeft offsetWidth offsetHeight scrollTop scrollLeft clientTop clientLeft clientWidth clientHeight 調整瀏覽器大小等

優化方案:
(1)將多次改變樣式屬性的方法合併在一起
(2)需要多次重排的元素設爲postion:absolute或者fixed 脫離文檔流可不影響其他元素
(3)遍歷插入Dom 用生成Dom結構字符串後再插入的辦法 替代
(4)隱藏元素不在Dom樹中,操作不會觸發重排,對一個元素進行復雜操作 可將其隱藏 操作完後 再顯示 只需兩次重排
(5)經常獲取能引起重排的屬性 可將屬性緩存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章