2017-02-16 9 views
0

トップにコードのスクロールの以下の部分のY位置を取得し、また、遅延受け付けますリアクトscrollTo /要素/コンポーネント

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}); 
    } 
}); 

はどのように似た何かを達成したが、私のメインのナビゲーションを使用してすることができますか?要素のオフセットを計算する方法はありますか?私はその代わりに、の上にを渡す代わりに、に渡すことができました。

+0

メインナビゲーションを使用するとどういう意味ですか? – juancab

+0

@juancab私は、アプリケーションのメインナビゲーションをクリックして、適切なセクションにスクロールしたいと思っています(ホーム、アバウト、コンタクトなど)。私は** scrollIntoView **で動作していますが、そのスムーズな動作は** Firefox **でのみ機能し、スクロールではなくジャンプします。 – Manu

答えて

1

これを達成するためにライブラリを使用します。

react-scrollをご覧ください。基本的なスクロールとスムーズなスクロールの指示です。

Live exampleが利用可能です。それがあなたのために働くなら、read the usage guidelines

+0

私は以前にこれを(他のライブラリと同様に)チェックしました。私はライブラリを必要としないアプローチのために飛び回っていました。私はそれについて考えるだろう、ありがとう! – Manu

+0

私はこの問題を解決するために第三者のライブラリを使用します。それほど主流ではなく、反応スクロールのような小さなユーティリティが頭痛を軽減することができます。 PS:これで問題が解決した場合は、[自分の回答を受け入れる](https://meta.stackexchange.com/a/5235/343165)に緑色のチェックマークをクリックしてください。これは、あなたが解決策を見つけたことを広範なコミュニティに示し、あなたと私の両方にいくつかの評判を与えます。そして、あなたの質問を気づかせることによって人々が同様の問題を経験するのを助けるかもしれません。 –

関連する問題