搜尋
首頁web前端html教學瀏覽器中重繪以及回流的概念解析

這篇文章帶給大家的內容是關於瀏覽器中重繪以及回流的概念解析 ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

1.渲染樹(render tree)
1.瀏覽器把取得到的HTML程式碼解析成一棵DOM樹,HTML中的每個標籤(tag)都是DOM樹中的一個節點,根節點就是我們常用的document物件。 DOM樹裡包含了HTML所有標籤,包括display:none隱藏,還有用JS動態新增的元素等;

2.瀏覽器把所有樣式(使用者定義的css和使用者代理程式)解析成樣式結構體,在解析過程中會去掉瀏覽器不能辨識的樣式,例如IE會去掉-moz開頭的樣式,而Firefox會去掉_開頭的樣式;

3.DOM樹和樣式結構體組合後建構render tree(渲染樹),render tree類似DOM樹,但差別很大,render tree 能辨識樣式,render tree的每一個節點都有自己的樣式,而且render tree中不包含隱藏的節點(如display :none的節點,還有head節點),因為這些節點不會用來呈現,而且不會影響呈現。

2.重繪與回流的定義
重繪:目前元素的樣式(背景顏色、字體顏色等)改變的時候,我們只需要把改變的元素重新的渲染一下即可,重繪對瀏覽器的效能影響較小,所以一般不考慮。

發生重繪的情況:改變容器的外觀風格等,例如background:black等。改變外觀,不改變佈局,不影響其他的dom。

回流:是指瀏覽器為了重新渲染部分或全部的文件而重新計算文件中元素的位置和幾何構造的過程。
因為回流可能導致整個dom樹的重新構造,所以是性能的一大殺手
一個元素的回流導致了其所有子元素以及DOM中緊隨其後的祖先元素的隨後的回流.

3.觸發回流的操作
1.調整視窗大小(Resizing the window)

2.改變字體(Changing the font )

3.增加或移除樣式表(Adding or removing a stylesheet)

4.內容變化,例如使用者在input框中輸入文字(Content changes, such as a user typing text in an input box)

5.啟動CSS 偽類,如:hover (IE 中為兄弟結點偽類的激活)(Activation of CSS pseudo classes such as :hover (in IE the activation of the pseudo class of a sibling)

6.操作class 屬性(Manipulating the class attribute)

7.腳本操作DOM(A script manipulating the DOM)

8.計算offsetWidth 和offsetHeight 屬性(Calculating offsetWidth and offsetHeight)

9.設定style 屬性的值(Setting a property of the style attribute)

10.fixed定位的元素,在拖曳滾動條的時候會一直回流

如何避免回流
1.  一起變化:如果要改變一個元素的樣式,可以將所有樣式集中在一個class上面一次變化,而不是變化幾次
2.  具有動畫效果請使用absolute
3.  避免使用表格佈局
4.  不要使用CSS表達式
5.  在最末改變元素
6. 動畫移動時候,要控制
例如我們拖曳元素時候,我是在他x或y座標改變5px才操作,這樣雖說降低了平滑度,但是對效能有提高
7.  如果你想讓複雜的表現發生改變,例如動畫效果,那麼請在這個流動線之外實現它。使用position-absolute或position-fixed來實現它。
8.  既然計算offsetWidth也會引起回流,那麼就拿一個變量保存它
9.  當我們需要向文檔中添加節點時,可以用文檔碎片的方式去解決這個問題的,當我們需要在DOM中加入新的元素的時候,先將其放在一個容器中,然後統一添加,這樣就只產生了一次回流

相關推薦:

# #js中自執行函數進行呼叫的兩種方法

js中的本地物件&內建物件&宿主物件的分析總結#

以上是瀏覽器中重繪以及回流的概念解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML屬性的目的是什麼?HTML屬性的目的是什麼?May 07, 2025 am 12:01 AM

htmlattributeseresene forenhancingwebelements'functionalityandAppearance.TheyAdDinformationTodeFineBehavior,外觀和互動,使網站互動,響應式,visalalyAppealing.AttributesLikutesLikeSlikEslikesrc,href,href,href,類,類型,類型,和dissabledtransfransformformformformformformformformformformformformformformforment

您如何在HTML中創建列表?您如何在HTML中創建列表?May 06, 2025 am 12:01 AM

toCreateAlistInHtml,useforforunordedlistsandfororderedlists:1)forunorderedlists,wrapitemsinanduseforeachItem,RenderingeringAsabulletedList.2)fororderedlists,useandfornumberedlists,useandfornumberedlists,casundfornumberedlists,casundfornthetthetthetthetthetthetthetttributefordforderfordforderforderentnumberingsnumberingsnumberingStys。

HTML行動:網站結構的示例HTML行動:網站結構的示例May 05, 2025 am 12:03 AM

HTML用於構建結構清晰的網站。 1)使用標籤如、、定義網站結構。 2)示例展示了博客和電商網站的結構。 3)避免常見錯誤如標籤嵌套不正確。 4)優化性能通過減少HTTP請求和使用語義化標籤。

您如何將圖像插入HTML頁面?您如何將圖像插入HTML頁面?May 04, 2025 am 12:02 AM

toinsertanimageIntoanhtmlpage,usethetagwithsrcandaltattributes.1)usealttextforAcccessibilityandseo.2)instementRcsetForresponSiveImages.3)applylazyloadingWithLoadingWithLoading =“ lazy” tooptimizeperformance.4)tooptimizeperformance.4)

HTML的目的:啟用Web瀏覽器可以顯示內容HTML的目的:啟用Web瀏覽器可以顯示內容May 03, 2025 am 12:03 AM

HTML的核心目的在於讓瀏覽器理解並展示網頁內容。 1.HTML通過標籤定義網頁結構和內容,如、到、等。 2.HTML5增強了多媒體支持,引入了和標籤。 3.HTML提供了表單元素,支持用戶交互。 4.優化HTML代碼可提升網頁性能,如減少HTTP請求和壓縮HTML。

為什麼HTML標籤對Web開發很重要?為什麼HTML標籤對Web開發很重要?May 02, 2025 am 12:03 AM

htmltagsareessentialforwebdevelopmentastheyandendenhancewebpages.1)semantictagsimproveaccessibilityandseo.2)semanteLayOut,語義和互動性。 3)poseriblesibilityandseoandseo.3)poseriblesoftagscanoftagscanoftagscanoptagscanoptimizeperefeneandimizeanDenSuroceRecRoscRoss-BrowserCrowserCercerComercompatibility。

說明將一致的編碼樣式用於HTML標籤和屬性的重要性。說明將一致的編碼樣式用於HTML標籤和屬性的重要性。May 01, 2025 am 12:01 AM

一致的HTML編碼風格很重要,因為它提高了代碼的可讀性、可維護性和效率。 1)使用小寫標籤和屬性,2)保持一致的縮進,3)選擇並堅持使用單引號或雙引號,4)避免在項目中混合使用不同風格,5)利用自動化工具如Prettier或ESLint來確保風格的一致性。

如何在 Bootstrap 4 中實現多項目輪播?如何在 Bootstrap 4 中實現多項目輪播?Apr 30, 2025 pm 03:24 PM

在Bootstrap4中實現多項目輪播的解決方案在Bootstrap4中實現多項目輪播並不是一件簡單的事情。雖然Bootstrap...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具