国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

【前端工程師手冊(cè)】學(xué)習(xí)回流和重繪(reflow和repaint)

liuyix / 1392人閱讀

摘要:重繪元素做了一些不影響排版的改變,比如背景色下劃線等等,只需要重新繪制的過(guò)程,叫做重繪。顯然回流帶來(lái)的代價(jià)大于重繪,因?yàn)橹乩L僅僅是重新畫(huà)一遍元素而已,但是重繪是重新計(jì)算重新畫(huà)。不然這會(huì)導(dǎo)致大量地讀寫(xiě)這個(gè)結(jié)點(diǎn)的屬性。

瀏覽器的大概工作流程

以普通的HTML頁(yè)面為例:

解析HTML文檔,生成dom樹(shù)

解析css產(chǎn)生css規(guī)則樹(shù)

解析JavaScript,通過(guò)DOM-API來(lái)操作dom樹(shù)和css規(guī)則樹(shù)

通過(guò)dom樹(shù)和css規(guī)則樹(shù)來(lái)構(gòu)造渲染樹(shù)(rendering tree)

調(diào)用操作系統(tǒng)的GUI接口畫(huà)頁(yè)面

回流(reflow)和重繪(repaint)

回流:

元素的大小尺寸、位置發(fā)生變化時(shí),會(huì)重新計(jì)算渲染樹(shù),頁(yè)面要進(jìn)行重新排版工作,這個(gè)過(guò)程即是回流。

重繪:

元素做了一些不影響排版的改變,比如背景色、下劃線等等,只需要重新繪制的過(guò)程,叫做重繪。

顯然回流帶來(lái)的代價(jià)大于重繪,因?yàn)橹乩L僅僅是重新畫(huà)一遍元素而已,但是重繪是重新計(jì)算+重新畫(huà)

回流的原因:

Initial。網(wǎng)頁(yè)初始化的時(shí)候。

Incremental。一些Javascript在操作DOM Tree時(shí)。

Resize。其些元件的尺寸變了

StyleChange。如果CSS的屬性發(fā)生變化了。

Dirty。幾個(gè)Incremental的reflow發(fā)生在同一個(gè)元素的子樹(shù)上。

更具體的說(shuō),就是這些常見(jiàn)的操作會(huì)引起回流:

調(diào)整窗口大小

字體大小

樣式表變動(dòng)

元素內(nèi)容變化,尤其是輸入控件

CSS偽類(lèi)激活,在用戶交互過(guò)程中發(fā)生

DOM操作,DOM元素增刪、修改

width, clientWidth, scrollTop等布局寬高的計(jì)算

ps:但是瀏覽器并不會(huì)在我們一進(jìn)行上面的操作就進(jìn)行回流,瀏覽器會(huì)積攢一批reflow然后一起進(jìn)行回流,不過(guò)有的操作會(huì)讓瀏覽器立馬進(jìn)行回流,比如resize窗口,改變了頁(yè)面默認(rèn)的字體,或者說(shuō)獲取以下這些值:

offsetTop, offsetLeft, offsetWidth, offsetHeight

scrollTop/Left/Width/Height

clientTop/Left/Width/Height

IE中的 getComputedStyle(), 或 currentStyle

如何減少reflow和repaint

避免頻繁的修改樣式,可以將要修改的多個(gè)樣式定義為一個(gè)class類(lèi),然后將類(lèi)名一次賦值即可

把dom離線操作:

使用documentFragment 對(duì)象在內(nèi)存里操作DOM

先把DOM給display:none(有一次reflow),然后你想怎么改就怎么改。比如修改100次,然后再把他顯示出來(lái)。

clone一個(gè)DOM結(jié)點(diǎn)到內(nèi)存里,然后想怎么改就怎么改,改完后,和在線的那個(gè)的交換一下

不要把DOM結(jié)點(diǎn)的屬性值放在一個(gè)循環(huán)里當(dāng)成循環(huán)里的變量。不然這會(huì)導(dǎo)致大量地讀寫(xiě)這個(gè)結(jié)點(diǎn)的屬性。

為動(dòng)畫(huà)的HTML元件使用fixed或absoult的position,那么修改他們的CSS是不會(huì)reflow的,因?yàn)槊撾x了文檔流

參考

減少重排與重繪

瀏覽器的渲染原理簡(jiǎn)介

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/113598.html

相關(guān)文章

  • 前端程師手冊(cè)學(xué)習(xí)回流重繪reflowrepaint

    摘要:重繪元素做了一些不影響排版的改變,比如背景色下劃線等等,只需要重新繪制的過(guò)程,叫做重繪。顯然回流帶來(lái)的代價(jià)大于重繪,因?yàn)橹乩L僅僅是重新畫(huà)一遍元素而已,但是重繪是重新計(jì)算重新畫(huà)。不然這會(huì)導(dǎo)致大量地讀寫(xiě)這個(gè)結(jié)點(diǎn)的屬性。 瀏覽器的大概工作流程 以普通的HTML頁(yè)面為例: 解析HTML文檔,生成dom樹(shù) 解析css產(chǎn)生css規(guī)則樹(shù) 解析JavaScript,通過(guò)DOM-API來(lái)操作dom樹(shù)和...

    fish 評(píng)論0 收藏0
  • 性能:深入理解瀏覽器渲染原理 reflow & repaint

    摘要:之后,如果渲染樹(shù)發(fā)生了變動(dòng),那么可能會(huì)觸發(fā)回流或重繪中的一個(gè)或二者。在書(shū)寫(xiě)時(shí)要避免不必要的層級(jí),書(shū)寫(xiě)時(shí)避免嵌套過(guò)深規(guī)則過(guò)于復(fù)雜,尤其是后代選擇器,匹配選擇器也會(huì)耗費(fèi)更多的。 剛?cè)胄星岸说臅r(shí)候是不是經(jīng)常看到有文章說(shuō)盡量不要用CSS通配符*,CSS選擇器層疊最好不要超過(guò)三層,HTML少使用table,結(jié)構(gòu)也要盡量簡(jiǎn)單一些...這一切說(shuō)的不無(wú)道理,過(guò)多的使用確實(shí)會(huì)造成瀏覽器渲染的性能降低,當(dāng)...

    WelliJhon 評(píng)論0 收藏0
  • DOM操作成本到底高在哪兒?

    摘要:刨根問(wèn)底,這里說(shuō)的成本,到底高在哪兒呢什么是文檔對(duì)象模型什么是可能很多人第一反應(yīng)就是等標(biāo)簽至少我是,但要知道,是,是,對(duì)象模型,是為提供的。操作具體的成本,說(shuō)到底是造成瀏覽器回流和重繪,從而消耗資源。 從我接觸前端到現(xiàn)在,一直聽(tīng)到的一句話:操作DOM的成本很高,不要輕易去操作DOM。尤其是React、vue等MV*框架的出現(xiàn),數(shù)據(jù)驅(qū)動(dòng)視圖的模式越發(fā)深入人心,jQuery時(shí)代提供的強(qiáng)大便...

    yuxue 評(píng)論0 收藏0
  • DOM操作成本到底高在哪兒?

    摘要:刨根問(wèn)底,這里說(shuō)的成本,到底高在哪兒呢什么是文檔對(duì)象模型什么是可能很多人第一反應(yīng)就是等標(biāo)簽至少我是,但要知道,是,是,對(duì)象模型,是為提供的。操作具體的成本,說(shuō)到底是造成瀏覽器回流和重繪,從而消耗資源。 從我接觸前端到現(xiàn)在,一直聽(tīng)到的一句話:操作DOM的成本很高,不要輕易去操作DOM。尤其是React、vue等MV*框架的出現(xiàn),數(shù)據(jù)驅(qū)動(dòng)視圖的模式越發(fā)深入人心,jQuery時(shí)代提供的強(qiáng)大便...

    MASAILA 評(píng)論0 收藏0
  • 回流重繪及其優(yōu)化

    摘要:回流重繪及其優(yōu)化渲染過(guò)程渲染引擎通過(guò)通過(guò)網(wǎng)絡(luò)請(qǐng)求接收渲染內(nèi)容解析抽象抽象出布局繪畫(huà)抽象渲染引擎的第一步是解析文檔并將解析的元素轉(zhuǎn)換為樹(shù)中的實(shí)際節(jié)點(diǎn)。 回流、重繪及其優(yōu)化 渲染過(guò)程 渲染引擎通過(guò)通過(guò)網(wǎng)絡(luò)請(qǐng)求接收渲染內(nèi)容 解析HTML抽象DOM tree 抽象出Render tree 布局(layout)render tree 繪畫(huà)render tree 抽象DOM tree 渲染引擎...

    Clect 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

liuyix

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<