我在 React 里用 window.scrollTo 想加个平滑滚动效果,但写了 behavior: 'smooth' 却没反应,页面还是瞬间跳转,不知道是哪里出错了?
试过在 Chrome 和 Firefox 都不行,代码大概是这样:
const scrollToSection = () => {
window.scrollTo({
top: document.getElementById('target-section')?.offsetTop || 0,
behavior: 'smooth'
});
};
window.scrollTo行为做了限制。在你的代码里,window.scrollTo应该是支持behavior: 'smooth'的,但有时候浏览器环境或者元素特性会影响这个效果。首先检查一下你的代码是否在某个事件回调或者异步操作之后调用的,有时候浏览器可能因为渲染优化会忽略这种微小的操作。
其次,确保
document.getElementById('target-section')能够正常获取到目标元素,如果获取不到,offsetTop就会是undefined或0,这可能导致滚动行为不符合预期。最后,可以尝试使用
scrollIntoView方法,它是专门为滚动到视图内的某个元素设计的,并且支持behavior: 'smooth'。你可以这样修改代码:这段代码首先检查了元素是否存在,然后调用
scrollIntoView方法,这样可以更好地保证平滑滚动的效果。试试看这个方法能不能解决你的问题。