如何在Vue中獲取用戶焦點位置呢?我們首先需要知道,當一個元素被聚焦時,瀏覽器會自動滾動到此元素的位置,并將其放置在可見區域內。根據這個原理,我們可以通過以下代碼獲取用戶焦點位置。
// 獲取用戶焦點位置 let top = document.activeElement.getBoundingClientRect().top; let left = document.activeElement.getBoundingClientRect().left; // 綁定事件監聽器 <template> <div> <input ref="myInput" @focus="onFocus"></input> </div> </template> <script> export default { methods: { // 獲取焦點位置 onFocus() { let top = this.$refs.myInput.getBoundingClientRect().top let left = this.$refs.myInput.getBoundingClientRect().left console.log(top, left) } } } </script>
以上代碼中,我們通過document.activeElement獲取到當前聚焦的元素,再利用getBoundingClientRect方法獲取到該元素距離窗口可視區域左上角的坐標。然后在Vue組件中,我們通過refs屬性拿到DOM元素的引用,綁定@focus事件監聽器,在onFocus方法中調用getBoundingClientRect方法,獲取到元素位置并輸出到控制臺。
當然,還有一些其他方法可以實現獲取用戶焦點位置的效果,例如通過添加scroll事件監聽用戶滾動位置,并根據元素的尺寸自動計算得到焦點位置等。但上述方法最為簡單,適合大多數場景下使用。