我一直在使用getBoundingClientRect()函數來獲取元素的尺寸,同時用戶正在拖動一個項目。我一直在使用它,它一直運行良好;不過,在鼠標移動過程中正在執行此計算時,我開始遇到重大性能問題。被移動的節點越大,情況越糟糕。我在Chrome中使用了分析工具,並注意到這個函數被包裹在用戶拖動時觸發的鼠標移動事件中,需要很長時間(每次調用31.4ms--規模爲每調用一次)在研究這個問題時,我遇到了其他使用它的人,並注意到了性能問題(http://dcousineau.com/blog/2013/09/03/high-performance-js-tip/)。Vanilla JS element.getBoundingClientRect的替代方法
getBoundingClientRect()在vanilla Javascript(絕對沒有jQuery)中有什麼替代方法?我的前端框架是AngularJS 1.5.8,我已經使用組件構建了應用程序(將來將把我們的大型應用程序遷移到NG2)。謝謝!
獲得的第一次點擊的元素的初始位置,無需重新計算它的每個鼠標移動 –
你能發佈最少的代碼來玩嗎? –
正如卡爾在回答中所說的那樣,它並沒有得到「更多」的香草。當然,如果你只需要一些價值,你可以要求擁有這些價值的單個屬性 - 但這可能不會更快。因此,提高性能的唯一選擇可能是不經常查詢值。看看反彈/節流。 https://css-tricks.com/the-difference-between-throttling-and-debouncing/,https://css-tricks.com/debouncing-throttling-explained-examples/ – CBroe