我想focus()在寡妇滚动后调用输入.我正在使用该scrollTo()方法的平滑行为.问题是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()
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我基于George Abitbol的解决方案编写了一个通用函数,而没有覆盖window.onscroll:
/**
* Native scrollTo with callback
* @param offset - offset to scroll to
* @param callback - callback function
*/
function scrollTo(offset, callback) {
const onScroll = function () {
if (window.pageYOffset === offset) {
window.removeEventListener('scroll', onScroll)
callback()
}
}
window.addEventListener('scroll', onScroll)
onScroll()
window.scrollTo({
top: offset,
behavior: 'smooth'
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4841 次 |
| 最近记录: |