亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

repaint和reflow的相關知識

2024-07-11 09:02:32
字體:
來源:轉載
供稿:網友

武林網(www.49028c.com)文章簡介:頁面重構應注意的repaint和reflow.

最近了解了下repaint和reflow的相關知識,覺得在頁面重構過程中就應該考慮前端開發(js)人員對dom進行操作,能夠減輕客戶瀏覽器的鴨梨。
在這里整理了一下相關資料,推薦看帖子底部的文章,如果覺得排版不夠好請移步我的博客圍觀。這是一個討論帖,拋磚引玉,大家說說自己工作中的經驗~

1. 什么是 repaint 和 reflow?

一個頁面由兩部分組成:
DOM:描述該頁面的結構
render:描述 DOM 節點 (nodes) 在頁面上如何呈現

當 DOM 元素的屬性發生變化 (如 color) 時, 瀏覽器會通知 render 重新描繪相應的元素, 此過程稱為 repaint。

如果該次變化涉及元素布局 (如 width), 瀏覽器則拋棄原有屬性, 重新計算并把結果傳遞給 render 以重新描繪頁面元素, 此過程稱為 reflow。

這兩個過程是很耗費瀏覽器性能的, 從 IE 系列和 Chrome 渲染頁面速度上的差距即可看出渲染引擎計算對應值和呈現并不一定高效, 而每次對元素的操作都會發生 repaints 或 reflow, 因此編寫 DOM 交互時如果不注意就會導致頁面性能低下.
頁面渲染的過程如下:

1.解析HTML代碼并生成一個 DOM 樹。

2.解析CSS文件,順序為:瀏覽器默認樣式->自定義樣式->頁面內的樣式。

3.生成一個渲染樹(render tree)。這個渲染樹和DOM樹的不同之處在于,它是受樣式影響的。它不包括那些不可見的節點。

4.當渲染樹生成之后,瀏覽器就會在屏幕上“畫”出所有渲染樹中的節點。

2. 什么情況下會觸發瀏覽器的repaint/reflow?

除了頁面在首次加載時必然要經歷該過程之外,還有以下行為會觸發這個行為:
引用:
1. DOM元素的添加、修改(內容)、刪除( Reflow + Repaint)
2. 僅修改DOM元素的字體顏色(只有Repaint,因為不需要調整布局)
3. 應用新的樣式或者修改任何影響元素外觀的屬性
4. Resize瀏覽器窗口、滾動頁面
5. 讀取元素的某些屬性(offsetLeft、offsetTop、offsetHeight、offsetWidth、 scrollTop/Left/Width/Height、clientTop/Left/Width/Height、 getComputedStyle()、currentStyle(in IE))
3. 怎么優化?

1. 避免在document上直接進行頻繁的DOM操作,如果確實需要可以采用off-document的方式進行,具體的方法包括但不完全包括以下幾種:


引用:
1. 先將元素從document中刪除,完成修改后再把元素放回原來的位置
2. 將元素的display設置為”none”,完成修改后再把display修改為原來的值
3. 如果需要創建多個DOM節點,可以使用DocumentFragment創建完后一次性的加入document
2. 集中修改樣式


引用:
       1. 盡可能少的修改元素style上的屬性
       2. 盡量通過修改className來修改樣式
       3. 通過cssText屬性來設置樣式值
3. 緩存Layout屬性值


引用:
       對于Layout屬性中非引用類型的值(數字型),如果需要多次訪問則可以在一次訪問時先存儲到局部變量中,之后都使用局部變量,這樣可以避免每次讀取屬性時造成瀏覽器的渲染。
4. 設置元素的position為absolute或fixed


引用:
       在元素的position為static和relative時,元素處于DOM樹結構當中,當對元素的某個操作需要重新渲染時,瀏覽器會渲染整個頁 面。將元素的position設置為absolute和fixed可以使元素從DOM樹結構中脫離出來獨立的存在,而瀏覽器在需要渲染時只需要渲染該元素 以及位于該元素下方的元素,從而在某種程度上縮短瀏覽器渲染時間,這在當今越來越多的Javascript動畫方面尤其值得考慮。
5. 權衡速度的平滑


引用:
       比如實現一個動畫,以1個像素為單位移動這樣最平滑,但reflow就會過于頻繁,CPU很快就會被完全占用。如果以3個像素為單位移動就會好很多。
6. 不要用tables布局


引用:
       不要用tables布局的另一個原因就是tables中某個元素一旦觸發reflow就會導致table里所有的其它元素 reflow。在適合用table的場合,可以設置table-layout為auto或fixed,這樣可以讓table一行一行的渲染,這種做法也是為了限制reflow的影響范圍
7. 不要在css里面寫expression


引用:
       很多情況下都會觸發reflow,如果css里有expression,每次都會重新計算一遍
參考文章:

       1. 如何減少瀏覽器repaint和reflow
       2. Repaint, reflow/relayout, restyle
       3. Reflows & Repaints: CSS Performance making your JavaScript slow?
       4. Repaint 跟蹤瀏覽器的渲染[如果你的FF是3.5beta+監聽網頁的重繪情況]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美视频videos6一9| 91精品国产自产在线观看永久| 国产精品免费看久久久香蕉| 九色精品美女在线| 欧美日韩福利视频| 国产精品高潮视频| 日韩精品在线免费播放| 久久精品国产亚洲| 最近2019好看的中文字幕免费| 色妞色视频一区二区三区四区| 欧美极品美女视频网站在线观看免费| 日韩欧美在线第一页| 久久精品国产成人精品| 欧美性生交xxxxx久久久| 亚洲va久久久噜噜噜久久天堂| 亚洲综合中文字幕68页| 亚洲精品电影网在线观看| 亚洲综合小说区| 日韩高清av一区二区三区| 欧美另类极品videosbest最新版本| 欧美综合第一页| xxx一区二区| 伊人亚洲福利一区二区三区| 欧美日韩国产一区二区| 亚洲三级 欧美三级| 久久久视频精品| 国产精品白嫩初高中害羞小美女| 亚洲精品一区av在线播放| 国产精品18久久久久久麻辣| 国产午夜精品美女视频明星a级| 色综合久久88色综合天天看泰| 国产剧情久久久久久| 久国内精品在线| 中文字幕欧美亚洲| 色午夜这里只有精品| 成人免费视频a| 亚洲aaa激情| 亚洲国产成人av在线| 欧美高清在线播放| 国产亚洲精品久久久久动| 成人在线视频福利| 日韩在线观看免费全集电视剧网站| 日韩av影院在线观看| 成人精品网站在线观看| 亚洲人成绝费网站色www| 亚洲性69xxxbbb| 欧美日韩综合视频网址| 亚洲女人天堂色在线7777| 丝袜美腿精品国产二区| 欧美在线xxx| 亚州欧美日韩中文视频| 亚洲人在线视频| 九九久久精品一区| 色悠悠久久久久| 久久成人18免费网站| 亚洲欧美色图片| 欧美麻豆久久久久久中文| 久久国产精品久久久久| 青青精品视频播放| 91九色国产社区在线观看| 这里只有视频精品| 国产精品美女视频网站| 国产精品成av人在线视午夜片| 日韩二区三区在线| 国产97色在线| 精品日本高清在线播放| 亚洲免费av网址| 日韩国产一区三区| 国产成人涩涩涩视频在线观看| 亚洲福利视频二区| 久久久天堂国产精品女人| 国产精品国产福利国产秒拍| 色黄久久久久久| 国产一区二区久久精品| 亚洲视频电影图片偷拍一区| 亚洲成人av资源网| 欧美激情18p| 欧美成人精品在线视频| 91在线观看免费高清完整版在线观看| 欧美又大粗又爽又黄大片视频| 精品在线观看国产| 成人精品一区二区三区| 91精品国产高清久久久久久| 亚洲free性xxxx护士白浆| 欧美精品激情视频| 国产+成+人+亚洲欧洲| 亚洲国产小视频在线观看| 日韩电影第一页| 欧美精品激情blacked18| 成人午夜在线影院| 国产91网红主播在线观看| 亚洲黄色av女优在线观看| 国产午夜精品免费一区二区三区| 情事1991在线| 日韩中文字幕免费| 亚洲第一天堂无码专区| 日韩欧美a级成人黄色| 亚洲国产精品一区二区三区| 国产精品福利观看| 中文字幕日韩专区| 欧美一级电影免费在线观看| 国产精品成人播放| 欧美亚洲激情视频| 黄色一区二区在线观看| 国产成人久久久精品一区| 精品久久久视频| 中文字幕无线精品亚洲乱码一区| 国内精品模特av私拍在线观看| 亚洲高清av在线| 国产亚洲欧美日韩美女| 中文字幕亚洲国产| 成人国产精品久久久| 欧美激情第1页| 97精品国产97久久久久久免费| 日韩欧美亚洲国产一区| 国产精品美女视频网站| 亚洲一区亚洲二区| 亚洲精品国偷自产在线99热| 欧美一级电影免费在线观看| 91黄色8090| 国产91色在线免费| 超碰97人人做人人爱少妇| 日韩在线观看免费高清完整版| 欧美精品电影在线| 国产精品第一视频| 亚洲人永久免费| 亚洲欧美变态国产另类| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲人成电影在线播放| 欧美在线视频一二三| 91精品久久久久久久久中文字幕| 亚洲一区二区久久| 欧美成人h版在线观看| 精品国产一区二区在线| 97超视频免费观看| 中文日韩在线观看| 国产精品午夜国产小视频| 激情久久av一区av二区av三区| 91系列在线播放| 欧美日韩亚洲视频| 亚洲第一福利在线观看| 日韩中文理论片| 亚洲aⅴ男人的天堂在线观看| 欧美巨猛xxxx猛交黑人97人| 青青a在线精品免费观看| 日韩欧美国产免费播放| 国产+成+人+亚洲欧洲| 91视频免费在线| 欧美区二区三区| 亚洲精品国偷自产在线99热| 国产91精品最新在线播放| 九九久久久久99精品| 成人国产精品免费视频| 亚洲美女精品成人在线视频| 亲爱的老师9免费观看全集电视剧| 亚洲第一中文字幕在线观看| 成人久久18免费网站图片| 国产热re99久久6国产精品| 欧美精品videossex性护士| 欧美黄色小视频| 国产精品对白刺激| 久久人人爽人人爽人人片av高请| 萌白酱国产一区二区| 欧美黄色片在线观看|