Vue3中window.scroll设behavior:auto时页面自动回顶原因咨询
问题原因分析
- 核心差异在于两种滚动行为的执行时机和浏览器/框架的后续处理逻辑:
behavior: 'auto'的同步特性:这个参数对应瞬间滚动,属于同步执行操作。在Vue的mounted钩子执行时,组件虽已挂载完成,但页面可能还有未收尾的渲染任务——比如异步加载的组件、未加载完成的图片,这些内容加载后会改变页面总高度,触发浏览器重排,部分场景下会把滚动位置重置回顶部;另外如果项目配置了路由的scrollBehavior默认返回{ top: 0 },路由的滚动恢复逻辑会在你的同步滚动之后执行,直接覆盖掉你的滚动操作,把页面拉回顶部。behavior: 'smooth'的异步特性:平滑滚动是异步执行的,它的滚动过程会延迟完成。等它开始生效时,页面的后续渲染、路由的默认滚动恢复这些操作都已经完成了,所以滚动到top:200的位置不会被打断或覆盖,最终能停留在目标位置。
内容的提问来源于stack exchange,提问作者user22410104
相关产品推荐
相关产品推荐

