reactjs - 更改 Gatsby 链接行为 - 在页面更改时停止滚动动画

标签 reactjs gatsby

我确信这将是一个非常直接的答案,但我终其一生都无法弄清楚如何让我的 Gatsby/React 网站在没有滚动的情况下从新页面的顶部开始单击内部链接时的过渡效果。

例子: 在我的主页上,我滚动到底部,然后单击一个链接将我带到“关于我”页面。 “关于我”页面加载时浏览器滚动位置仍位于页面底部,然后窗口滚动到页面顶部。这只需要几毫秒,但当我点击一个链接时,我想从页面顶部开始,没有任何过渡。

链接都是标准的 Gatsby 链接:

    <Link className="" to="/aboutme/">
      About Me
    </Link>

谢谢!

编辑

添加到我的布局包装器中,并添加了 useScrollRestoration Hook :

import React from 'react'
import PropTypes from 'prop-types'
import useScrollRestoration from 'gatsby'

import NavBar from './NavBar/NavBar'
import Footer from './Footer/Footer'

import './layout.scss'

const Layout = ({ children }) => {
  const aboutMeScrollRestoration = useScrollRestoration(`page-component-main`)

  return (
    <>
      <NavBar />
      <main className="bumpdown" {...aboutMeScrollRestoration}>
        {children}
      </main>
      <Footer />
    </>
  )
}

Layout.propTypes = {
  children: PropTypes.node.isRequired,
}

export default Layout

最佳答案

经过大量谷歌搜索,我最终设法解决了这个问题。它似乎不是 scrollRestoration 问题,而是 Bootstrap 问题。在 bootstrap/scss/_reboot.scss 中有如下代码:

:root {
  font-size: $font-size-root;

  @if $enable-smooth-scroll {
    @media (prefers-reduced-motion: no-preference) {
      scroll-behavior: smooth;
    }
  }
}

可以使用 $enable-reduced-motion: true;$enable-smooth-scroll: false; 在引导覆盖中停止滚动打开新页面时的行为。

我正在使用 enable-smooth-scrolling:false 选项,因为其他选项可能会产生进一步的影响。

关于reactjs - 更改 Gatsby 链接行为 - 在页面更改时停止滚动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66528483/

相关文章:

javascript - 在 reactjs 中,我试图有一个按钮让用户保持登录状态

javascript - 使用 React 和 Axios 从 Express API 下载文件

gatsby - 由于尖锐而无法安装 gatsby starter

javascript - 如何获取组件高度来触发 React 中的 Headroom?

javascript - 加密,然后将访问 token 存储在 localStorage 中

reactjs - create-react-app CSS 和 JS 路径

javascript - 将外部脚本导入 React 组件

css - 如何给 NetlifyCMS 编辑器预览添加样式

javascript - 如何使用 Gatsby 映射两次?

javascript - Gatsby Config 在 Javascript 文件中给出错误 ??运算符(operator)