第 15 題:談談你對迴流和重繪的理解?
什麼是迴流?
- 當一個元素自身的寬高,佈局,顯示或隱藏,或元素內部的文字結構發生變化,導致需要重新構建頁面的時候,就產生了迴流
什麼是重繪?
- 當一個元素自身的寬高,佈局,及顯示或隱藏沒有改變,而只是改變了元素的外觀風格的時候,就產生了重繪
什麼時候會進行迴流?
-
新增或者刪除可見的 DOM 元素的時候
-
元素的位置發生改變
-
元素的尺寸發生改變
-
內容改變
-
頁面第一次渲染的時候
-
列舉一些相關的 CSS 樣式:width、height、line-height、padding、margin、diaplay、border、top、position、float、font-size、overflow 等
什麼時候會進行重繪?
- 列舉一些相關的 CSS 樣式:color、background、background-size、visibility、box-shadow
如何進行效能最佳化?
-
用 transform 代替 top,left ,margin-top, margin-left… 這些位移屬性
-
不要使用 js 程式碼對 dom 元素設定多條樣式,選擇用一個 className 代替之
-
不要在迴圈內獲取 dom 的樣式例如:offsetWidth, offsetHeight, clientWidth, clientHeight 等。瀏覽器有一個迴流的緩衝機制,獲取這些屬性時會產生迴流
-
避免設定多層內聯樣式,寫個外部類這樣只回流一次
-
讓多次迴流的元素脫離文件流比如動畫,使用 position 屬性的 fixed 值或 absolute 值
-
一起變化(同時修改所有需要變化的屬性)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2796921/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 真正理解重繪和迴流
- 談談你對Promise的理解Promise
- 【Java 容器面試題】談談你對HashMap 的理解Java面試題HashMap
- JS的重繪和迴流JS
- JAVA面試題 請談談你對Sychronized關鍵字的理解?Java面試題Zed
- 面試——談談你對Java 平臺的理解面試Java
- 談談你對前端效能優化的理解前端優化
- 瀏覽器迴流和重繪瀏覽器
- 談談對MVC、MVP和MVVM的理解?MVCMVPMVVM
- 【開發必看】你真的瞭解迴流和重繪嗎?
- 【搞定面試官】談談你對JDK中Executor的理解?面試JDK
- 面試——談談你對Java 物件導向思想的理解面試Java物件
- Java面試題:請談談對ThreadLocal的理解?Java面試題thread
- 談談對中斷的理解
- 談談對BPM的理解(轉)
- 迴流、重繪及其優化優化
- 迴流(reflow)與重繪(repaint)AI
- web前端中涉及的迴流和重繪詳解!Web前端
- 談談對Spring IOC的理解Spring
- 談談我對Monad的理解
- 【面試普通人VS高手系列】談談你對Seata的理解面試
- 談談我對深拷貝和淺拷貝的理解
- 談談我對Spring IOC的理解Spring
- 談一談對vuex的簡單理解Vue
- 談談我對服務化的理解
- 【大廠面試06期】談一談你對Redis持久化的理解?面試Redis持久化
- 談談你對Java平臺的理解,你對Java平臺到底瞭解到了什麼程度?Java
- 每日一問:談談對 MeasureSpec 的理解
- 談談對IOC及DI的理解與思考
- 談談我對服務網格的理解
- 談談我對js中閉包的理解JS
- 談一談我對Spring Resource的理解Spring
- Java高頻面試題:談談你對MySQL索引的瞭解Java面試題MySql索引
- 關於迴流與重繪優化的探索優化
- 瀏覽器的迴流與重繪 (Reflow & Repaint)瀏覽器AI
- 談一談對vue-router的簡單理解Vue
- 談談我對學生浮躁心裡的理解
- 談談我對Android安全機制的理解Android