久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當前位置:首頁  >  技術(shù)干貨  > 講清楚重排或回流、重繪

        講清楚重排或回流、重繪

        來源:千鋒教育
        發(fā)布人:wjy
        時間: 2022-08-11 10:40:34 1660185634

          為了讓項目的運行效率更高,減少開銷,需要對重排、回流、重繪有一定的了解。

          重排和回流其實是一回事。

          瀏覽器渲染

          瀏覽器在渲染頁面的時候,大致是以下幾個步驟:

          1. 解析html生成DOM樹,解析css,生成CSSOM樹,將DOM樹和CSSOM樹結(jié)合,生成渲染樹;

          2. 根據(jù)渲染樹,瀏覽器可以計算出網(wǎng)頁中有哪些節(jié)點,各節(jié)點的CSS以及從屬關(guān)系 - 回流

          3. 根據(jù)渲染樹以及回流得到的節(jié)點信息,計算出每個節(jié)點在屏幕中的位置 - 重繪

          4. 最后將得到的節(jié)點位置信息交給瀏覽器的圖形處理程序,讓瀏覽器中顯示頁面

          回流

          回流:英文叫reflow,指的是當渲染樹中的節(jié)點信息發(fā)生了大小、邊距等問題,需要重新計算各節(jié)點和css具體的大小和位置。

          例:在css中對一個div修飾的樣式中,使用了寬度50%,此時需要將50%轉(zhuǎn)換為具體的像素,這個計算的過程,就是回流的過程。

          容易造成回流的操作:

          1、布局流相關(guān)操作

          · 盒模型的相關(guān)操作會觸發(fā)重新布局

          · 定位相關(guān)操作會觸發(fā)重新布局

          · 浮動相關(guān)操作會觸發(fā)重新布局

          2、改變節(jié)點內(nèi)的內(nèi)容

          改變節(jié)點的結(jié)構(gòu)或其中的文本結(jié)構(gòu)會觸發(fā)重新布局

          3、css

          · width

          · height

          · padding

          · border

          · margin

          · position

          · top

          · left

          · bottom

          · right

          · float

          · clear

          · text-align

          · vertical-align

          · line-height

          · font-weight

          · font-size

          · font-family

          · overflow

          · white-space

          重繪

          重繪:英文叫repaint,當節(jié)點的部分屬性發(fā)生變化,但不影響布局,只需要重新計算節(jié)點在屏幕中的絕對位置并渲染的過程,就叫重繪。比如:改變元素的背景顏色、字體顏色等操作會造成重繪。

          回流的過程在重繪的過程前面,所以回流一定會重繪,但重繪不一定會引起回流。

          容易造成重繪操作的css:

          · color

          · border-style

          · border-radius

          · text-decoration

          · box-shadow

          · outline

          · background

          每次回流都會對瀏覽器造成額外的計算消耗,所以瀏覽器對于回流和重繪有一定的優(yōu)化機制。瀏覽器通常都會將多次回流操作放入一個隊列中,等過了一段時間或操作達到了一定的臨界值,然后才會挨個執(zhí)行,這樣能節(jié)省一些計算消耗。但是在獲取布局信息操作的時候,會強制將隊列清空,也就是強制回流,比如訪問或操作以下或方法時:

          · offsetTop

          · offsetLeft

          · offsetWidth

          · offsetHeight

          · scrollTop

          · scrollLeft

          · scrollWidth

          · scrollHeight

          · clientTop

          · clientLeft

          · clientWidth

          · clientHeight

          · getComputedStyle()

          這些屬性或方法都需要得到最新的布局信息,所以瀏覽器必須去回流執(zhí)行。因此,在項目中,盡量避免使用上述屬性或方法,如果非要使用的時候,也盡量將值緩存起來,而不是一直獲取。

          減少回流和重繪

          合并樣式修改

          減少造成回流的次數(shù),如果要給一個節(jié)點操作多個css屬性,而每一個都會造成回流的話,盡量將多次操作合并成一個,例:

        講清楚重排或回流、重繪1

          操作div的3個css屬性,分別是padding、border、margin,此時就可以考慮將多次操作合并為一次。

          方法一:使用style的cssText:

        講清楚重排或回流、重繪2

          方法二:將這幾個樣式定義給一個類名,然后給標簽添加類名:

        講清楚重排或回流、重繪3

          批量操作DOM

          當對DOM有多次操作的時候,需要使用一些特殊處理減少觸發(fā)回流,其實就是對DOM的多次操作,在脫離標準流后,對元素進行的多次操作,不會觸發(fā)回流,等操作完成后,再將元素放回標準流。

          脫離標準流的操作有以下3中:

          1. 隱藏元素

          2. 使用文檔碎片

          3. 拷貝節(jié)點

          例:下面對DOM節(jié)點的多次操作,每次都會觸發(fā)回流

        講清楚重排或回流、重繪4

        講清楚重排或回流、重繪5

          這樣每次給ul中新增一個li的操作,每次都會觸發(fā)回流。

          方法一:隱藏ul后,給ul添加節(jié)點,添加完成后再將ul顯示

        講清楚重排或回流、重繪6

          此時,在隱藏ul和顯示ul的時候,觸發(fā)了兩次回流,給ul添加每個li的時候沒有觸發(fā)回流。

          方法二:創(chuàng)建文檔碎片,將所有l(wèi)i先放在文檔碎片中,等都放進去以后,再將文檔碎片放在ul中

        講清楚重排或回流、重繪7

          方法三:將ul拷貝一份,將所有l(wèi)i放在拷貝中,等都放進去以后,使用拷貝替換掉ul

        講清楚重排或回流、重繪8

          避免多次觸發(fā)布局

          如下回到頂部的操作:

        講清楚重排或回流、重繪9

          每隔20毫秒都會重新獲取滾動過的距離,每次都會觸發(fā)回流,代碼優(yōu)化如下:

        講清楚重排或回流、重繪10

          只獲取一次,每次都讓數(shù)字遞增,避免每次都獲取滾動過的距離。

          對于頁面中比較復(fù)雜的動畫,盡量將元素設(shè)置為絕對定位,操作元素的定位屬性,這樣只有這一個元素會回流,如果不是定位的話,容易引起其父元素以及子元素的回流。

          更多關(guān)于html5培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。

        tags:
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        我想直播帶貨去哪里找貨源一件代發(fā)

        現(xiàn)在直播帶貨是一個非常火的行業(yè),越來越多的人進入到這個圈子,但是,認真地說,直播帶貨能不能賺到錢還是要看自己。雖然這一行業(yè)火,收入高,...詳情>>

        2023-09-19 08:41:02
        入駐短視頻mcn需要多少錢?有哪些費用?

        眾所周知,現(xiàn)在短視頻成了很多人的自媒體創(chuàng)業(yè)道路之一,越來越多人喜歡在網(wǎng)上消遣時間,購物等。也有很多優(yōu)秀的博主去做出很多新的內(nèi)容,那么入...詳情>>

        2023-09-19 08:12:47
        短視頻帶貨應(yīng)該注冊什么公司?需要什么資料?

        短視頻大家應(yīng)該都非常熟悉,現(xiàn)在很多人都喜歡在閑暇的時候刷短視頻,短視頻平臺也開始了直播帶貨,商家也都開始創(chuàng)業(yè)了,那么短視頻帶貨需要營業(yè)...詳情>>

        2023-09-19 08:09:31
        怎樣投抖加不花錢?別人能看出來嗎?

        抖音一些視頻為了獲取更多點擊,一些博主機會投抖加。其實抖加的投放沒有絕對正確的方法,而不同賬號和視頻投放的策略都是不一樣的,不過一般情...詳情>>

        2023-09-19 08:00:10
        抖店入駐收費多少?開抖店費用是多少?

        如果要開通抖音小店,需要先把抖音賬號開通商品櫥窗功能。入駐之后,可以選擇頭條賬號、抖音賬號、火山賬號任一類型注冊或登錄。那開個抖店要多...詳情>>

        2023-09-19 07:50:26
        開班信息
        北京校區(qū)
        • 北京校區(qū)
        • 大連校區(qū)
        • 廣州校區(qū)
        • 成都校區(qū)
        • 杭州校區(qū)
        • 長沙校區(qū)
        • 合肥校區(qū)
        • 南京校區(qū)
        • 上海校區(qū)
        • 深圳校區(qū)
        • 武漢校區(qū)
        • 鄭州校區(qū)
        • 西安校區(qū)
        • 青島校區(qū)
        • 重慶校區(qū)
        • 太原校區(qū)
        • 沈陽校區(qū)
        • 南昌校區(qū)
        • 哈爾濱校區(qū)
        和林格尔县| 天长市| 察雅县| 县级市| 乌鲁木齐县| 喜德县| 元阳县| 县级市| 普安县| 永城市| 阜新市| 建昌县| 隆安县| 同仁县| 卢氏县| 鹤庆县| 那坡县| 深圳市| 顺昌县| 莆田市| 罗源县| 琼结县| 林芝县| 铁岭市| 曲周县| 乐至县| 资阳市| 湟中县| 锡林郭勒盟| 通州区| 济阳县| 南雄市| 金山区| 承德县| 犍为县| 松溪县| 河北区| 阳东县| 庄浪县| 剑阁县| 原阳县|