我知道設置樣式屬性會導致瀏覽器重排。訪問佈局屬性時是否也可能會發生瀏覽器重排?如果是,請給出具體示例,說明爲什麼會導致瀏覽器重排?訪問佈局信息是否也會導致瀏覽器重排?
回答
當然這取決於執行,但一般瀏覽器在讀取元素的屬性觸發,如果它認爲需要佈局數據重新查詢迴流(即該元素或任何一些佈局相關的屬性父元素已更改)。
您可以在這裏找到WebKit的受影響屬性列表:How (not) to trigger a layout in WebKit。 結合實例更普遍的文章:Rendering: repaint, reflow/relayout, restyle
獲取屬性可能(見下文)但改變屬性會。樣式相關的屬性,例如ele.width
。位置屬性(如iframe或img標籤的src
)將會。
另請注意,附加事件監聽器(on*=...
,addEventListener(*,...)
等)會導致迴流。這是由於事件捕獲從外部大多數父元素到src元素的方式,並通過父元素鏈從src元素中冒出。
此外,現代瀏覽器(例如chrome)會延遲更新GUI,除非查看指定的頁面。由於瀏覽器確認頁面正確顯示,頁面變爲活動狀態時會導致重排。這個延遲/隊列可以使屬性看起來好像它們引起迴流,但事實上,瀏覽器確保它正確顯示。
我知道這是遲到了的遊戲,這在某種程度上,如果你讀其他人發佈已鏈接,你可以找到答案,但它值得在此明確聲明:
瀏覽器的任務是給你當前值,所以作爲一般規則,它是將回流和重繪,以確保你有什麼是什麼值現在。我發現以這種方式考慮它會有所幫助 - 無論您在網頁上詢問任何元素的位置或大小,都可以假定您將引起迴流/重繪。不,它不是100%總是真實的,但它足夠接近100%,如果你要求頂部,左側,底部,右側,高度,寬度或任何影響這些測量的事物(例如比例,旋轉等),你將會導致R/R。這是我可以給你的具體答案。
再次,這是不是在任何時候都100%正確的,但我覺得,如果你認爲這樣的說法,它會在時間的98%,幫助它是真實的,不會傷害儘可能多對於其他2%,因爲它有助於98.
- 1. D3力佈局圖會導致緩慢,在Firefox瀏覽器中
- 2. 訪問Magento的API導致重定向 - 在瀏覽器訪問工作
- 3. 將瀏覽器信息加入會話
- 4. jQuery table.wrap()會導致佈局問題
- 5. iAds會導致自動佈局問題?
- 6. setInterval會導致瀏覽器掛起?
- 7. 打開瀏覽器導致瀏覽器繼續重新加載
- 8. ASP.NET瀏覽器緩存導致問題
- 9. 爲什麼這不會導致瀏覽器重定向?
- 10. 來自Apache訪問的瀏覽器信息
- 11. 在瀏覽器外解析HTML頁面和訪問表信息
- 12. 如何從AIR應用程序訪問瀏覽器信息?
- 13. 在瀏覽器外的Silverlight中訪問主機或URL信息
- 14. websockets是否允許p2p(瀏覽器到瀏覽器)通信?
- 15. HTML瀏覽器變焦會導致對齊問題
- 16. 是否可以在瀏覽器中檢測重繪/重排?
- 17. 隱藏/遮擋的SVG動畫是否仍然會導致瀏覽器重繪或性能問題?
- 18. 瀏覽器插件列表中是否有任何信息?
- 19. 跟蹤到用戶的瀏覽器信息是否壞?
- 20. 瀏覽器之間不一致的flexbox佈局(Chrome瀏覽器和Safari瀏覽器)
- 21. 使用em進行佈局會導致不同瀏覽器之間的不一致
- 22. clearInterval是否會導致重定向?
- 23. shink_to_fit是否會導致重新分配?
- 24. 重命名AppDelegate.h是否會導致hasard?
- 25. 讓Chrome瀏覽器詢問我是否應該保存登錄信息
- 26. 頁面重新加載是否會導致發佈?
- 27. 瀏覽器後退按鈕會導致iframe被導航
- 28. Javascript:修改scrollTop/scrollLeft是否觸發瀏覽器重排?
- 29. 這是否會導致內存問題?
- 30. 佈局在Safari瀏覽器和IE瀏覽器出錯了
這是一個軼事,但我已經看到鉻迴流元素時,只是試圖檢查開發工具中的元素。即使被檢查的元素遠不及接近/與有迴流元素有關。 – DCoder
[在DOM環境中何時發生迴流?](http://stackoverflow.com/questions/510213/when-does-reflow-happen-in-a-dom-environment)或[哪些DOM元素屬性可以導致瀏覽器執行迴流操作](http://stackoverflow.com/q/11616619/1048572) – Bergi
「佈局屬性」是什麼意思? – Bergi