我希望在窗口平滑滚动时对一个输入框调用 focus()
。但是问题是 focus
方法会中断平滑滚动的效果。解决方案是在滚动结束后立即调用 focus
函数。
但是我找不到任何文档或线程来讲述如何检测 scrollTo
方法的结束。
let el = document.getElementById('input')
let elScrollOffset = el.getBoundingClientRect().top
let scrollOffset = window.pageYOffset || document.documentElement.scrollTop
let padding = 12
window.scrollTo({
top: elScrollOffset + scrollOffset - padding,
behavior: 'smooth'
})
// wait for the end of scrolling and then
el.focus()
有任何想法吗?
scrollTo()
是否存在回调函数,但是如果你知道滚动的持续时间,可以尝试使用setTimeout()
! - sinawic