重繪和回流(轉(zhuǎn)載)

重繪和回流?

當(dāng)Render Tree中部分或全部元素的尺寸索抓、結(jié)構(gòu)、或某些屬性發(fā)生改變時(shí)耸黑,瀏覽器重新渲染部分或全部文檔的過程稱為回流篮幢。

導(dǎo)致回流的操作:

1、頁面首次渲染

2三椿、瀏覽器窗口大小發(fā)生改變

3、元素尺寸或位置發(fā)生改變

4搜锰、元素內(nèi)容變化(文字?jǐn)?shù)量或圖片大小改變而引起的計(jì)算值寬度和高度改變)

5、元素字體大小變化

6焊傅、添加或者刪除可見的DOM元素

7、激活CSS偽類(例如::hover)

8、查詢某些屬性或調(diào)用某些方法

9鹏倘、offsetWidth,width,clientWidth,scrollTop/scrollHeight的計(jì)算, 會(huì)使瀏覽器將漸進(jìn)回流隊(duì)列Flush骆姐,立即執(zhí)行回流捏题。

當(dāng)頁面中元素樣式的改變并不影響它在文檔流中的位置時(shí)(例如:color、background-color公荧、visibility等),瀏覽器會(huì)將新樣式賦予給元素并重新繪制它循狰,這個(gè)過程稱為重繪券勺。

回流必定會(huì)發(fā)生重繪灿里,重繪不一定會(huì)引發(fā)回流。

如何避免重繪和回流匣吊?

css:

避免使用table布局,可能很小的一個(gè)小改動(dòng)會(huì)造成整個(gè)table的重新布局

盡可能在DOM樹的最末端改變class社痛。

避免設(shè)置多層內(nèi)聯(lián)樣式缕碎。

將動(dòng)畫效果應(yīng)用到position屬性為absolute或fixed的元素上。

動(dòng)畫實(shí)現(xiàn)的速度的選擇咏雌,動(dòng)畫速度越快,回流次數(shù)越多赊抖,也可以選擇使用requestAnimationFrame

避免使用CSS表達(dá)式(例如:calc())

使用transform替代top

使用visibility替換display: none,因?yàn)榍罢咧粫?huì)引起重繪房匆,后者會(huì)引發(fā)回流(改變了布局)

將頻繁重繪或者回流的節(jié)點(diǎn)設(shè)置為圖層报亩,圖層能夠阻止該節(jié)點(diǎn)的渲染行為影響別的節(jié)點(diǎn)

js:

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

避免頻繁操作DOM劲件,創(chuàng)建一個(gè)documentFragment,在它上面應(yīng)用所有DOM操作苗分,最后再把它添加到文檔中牵辣。

也可以先為元素設(shè)置display: none摔癣,操作結(jié)束后再把它顯示出來。因?yàn)樵赿isplay屬性為none的元素上進(jìn)行的DOM操作不會(huì)引發(fā)回流和重繪拐云。

避免頻繁讀取會(huì)引發(fā)回流/重繪的屬性近她,如果確實(shí)需要多次使用,就用一個(gè)變量緩存起來粘捎。

對(duì)具有復(fù)雜動(dòng)畫的元素使用絕對(duì)定位,使它脫離文檔流攒磨,否則會(huì)引起父元素及后續(xù)元素頻繁回流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灸撰,一起剝皮案震驚了整個(gè)濱河市拼坎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泰鸡,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰迹,死亡現(xiàn)場(chǎng)離奇詭異余舶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匿值,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憎妙,“玉大人曲楚,你說我怎么就攤上這事×埽” “怎么了喷楣?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵鹤树,是天一觀的道長(zhǎng)逊朽。 經(jīng)常有香客問我,道長(zhǎng)叽讳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任邑狸,我火速辦了婚禮涤妒,結(jié)果婚禮上单雾,老公的妹妹穿的比我還像新娘她紫。我一直安慰自己,他們只是感情好硬萍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布围详。 她就那樣靜靜地躺著,像睡著了一般助赞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雹食,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天群叶,我揣著相機(jī)與錄音吃挑,去河邊找鬼街立。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赎离,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虽画,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼渗柿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起做祝,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤鸡岗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后轩性,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悯嗓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年卸察,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坑质。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涡扼,死狀恐怖稼跳,靈堂內(nèi)的尸體忽然破棺而出吃沪,到底是詐尸還是另有隱情,我是刑警寧澤票彪,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布降铸,位于F島的核電站在旱,受9級(jí)特大地震影響垮耳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜终佛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绍豁。 院中可真熱鬧牙捉,春花似錦竹揍、人聲如沸邪铲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至被饿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狭握,已是汗流浹背疯溺。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囱嫩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓澡谭,卻偏偏與公主長(zhǎng)得像损俭,于是被迫代替她去往敵國(guó)和親蛙奖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杆兵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容