フィドル: http://jsfiddle.net/DerNalia/88N4d/9/
私が達成しようとしている動作:
- 十分なスペースがある場合は、サイドバーをページに固定する必要があります
- サイドバーに十分なスペースがない場合は、サイドバーをスクロールする必要があります
- 下にスクロールしてサイドバーの一番下に到達すると、スクロールを停止する必要があります
- 下にスクロールすると、サイドバーの一番下に到達するまで、サイドバーも下にスクロールする必要があります。
- 上にスクロールし、サイドバーの上部に到達すると、スクロールを停止する必要があります
- コンテンツのスクロール中の任意の時点で、ユーザーがスクロールの方向を切り替えた場合、サイドバーもページ/コンテンツの残りの部分と同じ方向に移動する必要があります
- 上にスクロールすると、サイドバーの上部に到達するまで、サイドバーも上にスクロールする必要があります
- コンテンツがサイドバーよりも短い場合でも、サイドバーはスクロールできるはず です これは私が問題を抱えているものです
コンテンツ本体の実際のスクロール距離を使用するのではなく、ユーザーが希望する意図したスクロール距離を検出できるようにするにはどうすればよいですか? 別の解決策があるかもしれませんが、これは今のところ私が考えることができるすべてです。
現在、Mac で Chrome を使用しています。
アップデート:
私が気づいたこと:Macでトラックパッドを使用すると、エッジでストレッチ/バウンススクロールのシェナニガンが発生します..これにより、このjavascriptハードコアが台無しになります。十分な回数バウンスすると、サイドバーを画面から完全にスクロールすることができます。マウス ホイールのスクロールには、この問題はありません。