繁体   English   中英

scrollIntoView 导致整个页面滚动

[英]scrollIntoView causing entire page to scroll

当某个事件发生时,我想将div容器滚动到其可滚动区域的中心。 我正在使用scrollIntoView来实现这一点:

const target = document.getElementById('target-id');
target.scrollIntoView({ behavior: 'smooth', block: 'center' });

但是,这也会导致整个页面向上滚动。 正如这篇文章所强调的,这似乎是 Chrome 中的一个错误。 但是,我试图通过每次滚动时将页面滚动到顶部来否定它的效果。

const target = document.getElementById('target-id');
target.scrollIntoView({ behavior: 'smooth', block: 'center' });
window.scrollTo(0, 0);

但这不起作用,因为容器根本不滚动。 我相信这是因为我在调用scrollIntoView后立即尝试向上滚动整个页面。 我想在scrollIntoView animation 完成后滚动页面。 有没有办法做到这一点?

尝试包装它,使其在事件循环的下一轮执行:

setTimeout(()=>
  window.scrollTo(0, 0);
, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM