-
回流(必定產(chǎn)生重繪)
渲染樹中的元素因尺寸、布局、顯隱的改變重新構(gòu)建,產(chǎn)生回流
每頁至少需一次回流(加載時)
發(fā)生時,渲染樹中受影響的部分(和后面的元素)被重新構(gòu)造- 調(diào)整窗口的大小
- 改變字體,如果用rem 設(shè)置了根目錄的字體大小,這樣就減少了回流的次數(shù)
- 增加或者移除樣式表
- 內(nèi)容的變化,用戶在input中輸入了文字(這是不可避免的)
- 激活CSS的偽類
- 操作class屬性
- 基本操作DOM(包括js中的domcument等)
- 計算offsetWidth與offsetHeight 屬性,獲取元素在窗口中的位置
- 在html代碼中直接設(shè)置 style 屬性的值,這個降低了代碼的利用率,還影響性能
重繪(不一定產(chǎn)生回流)
渲染樹中的元素更新不影響布局和尺寸的可見屬性(background、visibility)等時,產(chǎn)生重繪-
如何減少
減少對渲染樹的操作(合并多次多DOM和樣式的修改)和對一些style值的請求- 對尺寸、布局改動頻繁的元素abosolute或fixed定位,使之脫離渲染樹
- 樣式表放在head標(biāo)簽中,腳本放在body結(jié)束前。
- 避免多次獲取、操作dom節(jié)點
- 修改元素的class而不是直接操作樣式
例子
top/left是布局類的樣式,這個樣式的變化會導(dǎo)致回流 - 即指對這些節(jié)點以及受這些節(jié)點影響的其它節(jié)點,進(jìn)行CSS計算->布局->重繪過程,這個過程的前2步是消耗大量資源的
translate導(dǎo)致重繪- 即在屏幕上重新畫一下,不會進(jìn)行CSS計算和布局這2個性能大戶,所以我們認(rèn)為translate性能上要明顯好于top/left
回流和重繪
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 什么是回流和重繪? (1)當(dāng)render tree中的一部分(或全部)因為元素的規(guī)模尺寸,布局,隱藏等改變而需要重...
- 簡介瀏覽器可以被認(rèn)為是使用最廣泛的軟件,本文將介紹瀏覽器的工 作原理,我們將看到,從你在地址欄輸入google.c...
- 頁面重繪和回流以及優(yōu)化 在討論頁面重繪、回流之前。需要對頁面的呈現(xiàn)流程有些了解,頁面是怎么把html結(jié)合css等顯...
- clipsToBounds(UIView)是指視圖上的子視圖,如果超出父視圖的部分就截取掉 masksToBoun...