元素focus頁面不滾動不定位的JS處理


有時候我們希望元素被focus的時候頁面不發生滾動,例如我們點擊一個按鈕打開一個彈框,此時點擊彈框中的關閉按鈕隱藏彈框后,希望鍵盤的焦點回到之前的按鈕上,我們就會執行如下JavaScript代碼:

button.focus();

但是有時候會帶來另外一個比較嚴重的體驗問題,那就是如果彈框顯示之后我們頁面發生了滾動,原本點擊的按鈕跑到了屏幕顯示區域之外,這個時候,按鈕再次focus的時候就會觸發按鈕元素scrollIntoView重定位,瀏覽器發生滾動,表現為突然的跳動

如果想要聚焦同時不發生滾動,其實很簡單,使用一個全新的API參數preventScroll就可以了,例如:

button.focus({ 
    preventScroll: true 
});

注:不兼容IE。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM