【发布时间】:2020-05-22 15:54:31
【问题描述】:
我在实现基于 React 的 useRef 的元素的平滑滚动时遇到了麻烦,该元素可以在任何现代浏览器中运行,并且动画没有任何延迟。这似乎很难,这就是我寻求帮助的原因。
已尝试使用 scrollIntoView({ behavior: 'smooth', block: 'start' }),它在 Google Chrome 和 Firefox 中运行良好,但 Safari 可以似乎不起作用。尝试安装 polyfill (https://www.npmjs.com/package/smoothscroll-polyfill) 以支持 Safari 和其他浏览器,但在 Safari 中的 Iphone 8 上进行测试时,由于滚动动画滞后,它还不够好。
考虑创建一个名为 ScrollToElement 的实用程序函数,该函数接受元素 ref 或其他内容并尝试自己对其进行动画处理,但需要一些帮助才能开始,因为我还没有真正玩过css动画。
可以帮助我在解决这个问题的正确方向上,以便我可以顺利滚动到任何浏览器中的任何 div 吗?
const elementRef = useRef<HTMLDivElement>(null)
实用程序函数
export const scrollToElement = (element: HTMLDivElement) => {
}
顺便说一句,我正在做打字稿。
【问题讨论】:
-
我在我的portfolio website 中使用了
smoothscroll-polyfill,如果它滞后,你能玩一下导航吗?如果是,那我也得改一下。
标签: javascript reactjs typescript animation use-ref