小提琴:http: //jsfiddle.net/DerNalia/88N4d/9/
我试图完成的行为:
- 如果有足够的空间放置侧边栏,则应将它们固定在页面上
- 如果没有足够的空间,侧边栏应该滚动
- 向下滚动并到达侧边栏的底部时,它应该停止滚动
- 向下滚动时,侧边栏也应向下滚动,直到到达侧边栏的底部
- 向上滚动并到达侧边栏的顶部时,它应该停止滚动
- 如果在内容滚动期间的任何时候,用户切换滚动方向,侧边栏也应与页面/内容的其余部分沿相同方向移动
- 向上滚动时,侧边栏也应该向上滚动,直到到达侧边栏的顶部
- 如果内容比侧边栏短,侧边栏应该仍然可以滚动 这是我遇到的问题
如何做到这一点,以便我可以检测到用户所需的预期滚动距离,而不是使用内容正文的实际滚动距离?可能还有另一种解决方案,但这是我现在能想到的。
我目前在 Mac 上使用 Chrome。
更新:
我注意到的一件事:在 Mac 上使用触控板会在边缘进行拉伸/有弹性的滚动恶作剧.. 这会弄乱这个 javascript 硬核。如果您向上弹起足够多的次数,则可以将侧边栏完全滚动到屏幕之外。鼠标滚轮滚动没有这个问题。