【问题标题】:React scrollTo / get Y position of an element/componentReact scrollTo / 获取元素/组件的 Y 位置
【发布时间】:2017-07-05 23:09:27
【问题描述】:

以下代码滚动到顶部并接受延迟:

const ScrollToTop = React.createClass({
  getInitialState: function () {
    return {intervalId: 0};
  },

  scrollStep: function () {
    const top = 0;

    if (window.pageYOffset === top) {
      clearInterval(this.state.intervalId);
    }
    window.scroll(top, window.pageYOffset - this.props.scrollStepInPx);
  },

  scrollToTop: function (event) {
    event.preventDefault();

    const intervalId = setInterval(this.scrollStep, this.props.delayInMs);

    this.setState({intervalId: intervalId});
  }
});

如何使用主导航实现类似的功能?有没有办法计算元素的偏移量?然后我可以通过 this 而不是传递 top

【问题讨论】:

  • 使用主导航是什么意思?
  • @juancab 我的应用中有一个主导航,我想在点击时滚动到相应的部分(例如主页、关于、联系人等)。我已经使用 scrollIntoView 进行了这项工作,但它的流畅行为仅在 Firefox 中有效,因此它会跳转而不是滚动。

标签: reactjs scroll offset


【解决方案1】:

使用库来实现。

看看react-scroll。这是一个基本滚动和平滑滚动的指令。

Live example 可用。如果这对你有用,read the usage guidelines

【讨论】:

  • 我之前已经检查过这个(以及其他库)。我一直在寻找一种不需要库的方法。我会考虑的,谢谢!
  • 我会使用第三方库来解决这个问题。它不是那么主流,像 react-scroll 这样的小工具可以让你头疼。 PS:如果这解决了您的问题,我想通过单击绿色复选标记询问您accept my answer。这向更广泛的社区表明您找到了解决方案,为您和我带来了一定的声誉,并且通过让您的问题引起注意,它可能会帮助遇到类似问题的人们。
猜你喜欢
  • 2022-08-02
  • 2016-08-03
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多