什么是回流幼衰,什么是重繪,有什么區(qū)別塑顺?

html 加載時(shí)發(fā)生了什么

在頁面加載時(shí)严拒,瀏覽器把獲取到的HTML代碼解析成1個(gè)DOM樹,DOM樹里包含了所有HTML標(biāo)簽裤唠,包括display:none隱藏,還有用JS動(dòng)態(tài)添加的元素等墓赴。
瀏覽器把所有樣式(用戶定義的CSS和用戶代理)解析成樣式結(jié)構(gòu)體
DOM Tree 和樣式結(jié)構(gòu)體組合后構(gòu)建render tree, render tree類似于DOM tree航瞭,但區(qū)別很大,因?yàn)閞ender tree能識(shí)別樣式章办,render tree中每個(gè)NODE都有自己的style,而且render tree不包含隱藏的節(jié)點(diǎn)(比如display:none的節(jié)點(diǎn)挪蹭,還有head節(jié)點(diǎn))休偶,因?yàn)檫@些節(jié)點(diǎn)不會(huì)用于呈現(xiàn),而且不會(huì)影響呈現(xiàn)的懂算,所以就不會(huì)包含到 render tree中庇麦。我自己簡單的理解就是DOM Tree和我們寫的CSS結(jié)合在一起之后山橄,渲染出了render tree舍悯。

什么是回流

當(dāng)render tree中的一部分(或全部)因?yàn)樵氐囊?guī)模尺寸,布局饮醇,隱藏等改變而需要重新構(gòu)建秕豫。這就稱為回流(reflow)。每個(gè)頁面至少需要一次回流祠墅,就是在頁面第一次加載的時(shí)候歌径,這時(shí)候是一定會(huì)發(fā)生回流的,因?yàn)橐獦?gòu)建render tree狗准。在回流的時(shí)候茵肃,瀏覽器會(huì)使渲染樹中受到影響的部分失效,并重新構(gòu)造這部分渲染樹验残,完成回流后,瀏覽器會(huì)重新繪制受影響的部分到屏幕中故俐,該過程成為重繪。

什么是重繪

當(dāng)render tree中的一些元素需要更新屬性辑舷,而這些屬性只是影響元素的外觀槽片,風(fēng)格,而不會(huì)影響布局的碌廓,比如background-color剩盒。則就叫稱為重繪。

區(qū)別:

他們的區(qū)別很大:
回流必將引起重繪纪挎,而重繪不一定會(huì)引起回流跟匆。比如:只有顏色改變的時(shí)候就只會(huì)發(fā)生重繪而不會(huì)引起回流
當(dāng)頁面布局和幾何屬性改變時(shí)就需要回流
比如:添加或者刪除可見的DOM元素,元素位置改變烤蜕,元素尺寸改變——邊距迹冤、填充、邊框叁巨、寬度和高度,內(nèi)容改變

擴(kuò)展:

瀏覽器的幫忙

所以我們能得知回流比重繪的代價(jià)要更高蚀瘸,回流的花銷跟render tree有多少節(jié)點(diǎn)需要重新構(gòu)建有關(guān)系
因?yàn)檫@些機(jī)制的存在庶橱,所以瀏覽器會(huì)幫助我們優(yōu)化這些操作,瀏覽器會(huì)維護(hù)1個(gè)隊(duì)列寂嘉,把所有會(huì)引起回流、重繪的操作放入這個(gè)隊(duì)列泉孩,等隊(duì)列中的操作到了一定的數(shù)量或者到了一定的時(shí)間間隔,瀏覽器就會(huì)flush隊(duì)列珍昨,進(jìn)行一個(gè)批處理。這樣就會(huì)讓多次的回流镣典、重繪變成一次回流重繪唾琼。

自己的優(yōu)化

但是靠瀏覽器不如靠自己,我們可以改變一些寫法減少回流和重繪
比如改變樣式的時(shí)候赶舆,不去改變他們每個(gè)的樣式,而是直接改變className 就要用到cssText 但是要注意有一個(gè)問題,會(huì)把原有的cssText清掉蜻懦,比如原來的style中有’display:none;’,那么執(zhí)行完上面的JS后悠咱,display就被刪掉了征炼。
為了解決這個(gè)問題,可以采用cssText累加的方法眼坏,但是IE不支持累加,前面添一個(gè)分號(hào)可以解決宰译。
還有添加節(jié)點(diǎn)的時(shí)候比如要添加一個(gè)div里面有三個(gè)子元素p魄懂,如果添加div再在里面添加三次p,這樣就觸發(fā)很多次回流和重繪缀拭,我們可以用cloneNode(true or false) 來避免,一次把要添加的都克隆好再appened就好了蛛淋,還有其他很多的方法就不一一說了


如果您覺得對(duì)您有幫助!就請(qǐng)幫我點(diǎn)個(gè)喜歡??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敷扫,一起剝皮案震驚了整個(gè)濱河市诚卸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卒密,老刑警劉巖棠赛,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鼎俘,居然都是意外死亡辩涝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門捉邢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商膊,“玉大人,你說我怎么就攤上這事藐翎∈的唬” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵赤惊,是天一觀的道長凰锡。 經(jīng)常有香客問我圈暗,道長员串,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任寸齐,我火速辦了婚禮抄谐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅厚。我一直安慰自己浦箱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布酷窥。 她就那樣靜靜地躺著,像睡著了一般妆棒。 火紅的嫁衣襯著肌膚如雪拳氢。 梳的紋絲不亂的頭發(fā)上蛋铆,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音留特,去河邊找鬼玛瘸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糊渊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贺喝,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼躏鱼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了染苛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤躯概,失蹤者是張志新(化名)和其女友劉穎楞陷,沒想到半個(gè)月后茉唉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艾凯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年趾诗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹬蚁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贝乎,死狀恐怖叽粹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锤灿,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布但校,位于F島的核電站状囱,受9級(jí)特大地震影響州刽,放射性物質(zhì)發(fā)生泄漏浪箭。R本人自食惡果不足惜穗椅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一匹表、第九天 我趴在偏房一處隱蔽的房頂上張望袍镀。 院中可真熱鬧冻晤,春花似錦苇羡、人聲如沸鼻弧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歼捏。三九已至笨篷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間率翅,已是汗流浹背练俐。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留安聘,地道東北人痰洒。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓瓢棒,卻偏偏與公主長得像浴韭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脯宿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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