jQuery – DIV通过滚动运动和粘贴位置移动到窗口的顶部和底部

可能已经有一个jQuery插件可以实现这一点,但我找不到一个完全按照我所做的去做。 如果有的话,请指教我,谢谢。

我的问题是我有很长的页面内容,当您在页面底部滚动时,我的侧边栏不可见。

因此,当您向上和向下滚动页面时,我想让我的#sidebar div保持在浏览器窗口的顶部和底部。

我的侧边栏高度比典型的屏幕分辨率长,所以我需要侧边栏的底部粘在浏览器窗口的底部以及浏览器的顶部。

因此,当您开始向下滚动时,侧栏会像平常一样滚动,但是当您到达侧栏的末端时,它会粘住并且不会滚动,当您开始向上滚动时,侧边栏将会跟随,直到侧边栏的顶部到达浏览器,然后它坚持。 反之亦然。

这可能吗?

我创建了一个简单的设计布局的jsfiddle ,它是核心。 我在边栏上添加了一个虚线边框,所以你现在应该选择侧边栏。

http://jsfiddle.net/motocomdigital/7ey9g/5/

任何建议,或者你知道在线教程或演示,都会非常棒!


UPDATE

请看@Darek Rossman的这个尝试

http://jsfiddle.net/dKDJz/4/

他有基本的想法。 但向上滚动会使其突然移动到顶部。 我需要使用向上/向下滚动的侧边栏来保持流畅。 但坚持窗户的顶部或底部。 当页眉/页脚在视口中时,它也不应固定定位,因此它不会叠加。

谢谢

请看这里的小提琴: http : //jsfiddle.net/dKDJz/2/

基本上,您只需要观察滚动事件,一旦窗口的滚动偏移量大于侧边栏的顶部,它就会向侧边栏添加一个固定的类,并在其向上滚动时删除。

这是根据CSS-Tricks发布的解决方案改编的

我用我的解决方案更新了jsfiddle http://jsfiddle.net/7ey9g/76/

当窗口大于侧边栏时,侧边栏应保持在顶部,当侧边栏较大时,侧边栏应固定在底部。

你不需要任何jQuery或javascript。 所有这一切都可以在CSS中实现, position: fixed

将侧边栏选择器更改为以下内容

 #sidebar { width: 130px; height: auto; overflow: hidden; background: #ffffff; margin: 0 auto; clear: right; padding: 8px; background: #e5e5e5; border: 2px dashed red; position: fixed; right: 35px; } 

不幸的是我没有足够的代表来简单地评论这个链接,所以在这里你去:

http://www.derekallard.com/blog/post/conditionally-sticky-sidebar

它已经有几年了,但根据屏幕截图,它似乎完全涵盖了您的需求。

试试这里http://jsfiddle.net/dKDJz/8/

我已经删除了相当多的代码。

我所做的就是当你向下滚动它到达侧边栏的顶部时,它会粘在窗户的顶部。 滚动回到顶部后,无论标题有多高,它都会在符合标题时解开。

我玩过Derek正在做的事情,我已经完成了你最初要求的顶部和底部。

我根据自己的需要编辑了一些css,我相信你可以把旧东西放在那里并复制脚本。

http://jsfiddle.net/mLdnb/3/

/ * NewEdit * /

我已经取代了我所做的事情。 我想出了这个:
http://jsfiddle.net/stillb4llin/dKDJz/47/

/ * EndEdit * /