jquery固定div滚动,运动平稳

时间:2013-04-11 08:18:29

标签: php jquery css

编辑:请参阅下面的答案,z-index的最新版本和内容为http://jsfiddle.net/66MBH/6/
滚动回到顶部有一个小错误,第一个侧边栏在到达其起始位置后不会停止,快速修复小提琴是设置.fixed顶部:XXpx;超过标题的高度。
感谢您的帮助,Fbynite!

我有一个我需要修复的jquery脚本,
我对javascript知之甚少,一个人为我做了这个,
它按照我想要的方式执行,当它滚动时开始跟随,然后在点击下一个侧边栏时停止,然后在您继续滚动时下一个栏开始跟随。
但侧边栏的运动非常跳跃和毛刺,我不知道该怎么做。

我正在寻找的一个例子是你可以在http://9gag.com的每个帖子中看到的小栏,其中包含标题,评级和twitter / facebook分享。 如果你对jquery很好,请拍一下..
我有这个小提琴来清除它:jsfiddle.net/7KcJb/4
(与9gag矿井上的那个相同,只是浮动并移出了一些边缘左边的柱子:-XXpx;)

$(document).ready(function () {  
  $(window).scroll(function (event) {
    var y = $(this).scrollTop();
      $('.socialbookmarks2').each(function(){
          var top = $(this).offset().top - parseFloat($(this).css('marginTop').replace(/auto/, 0));
          var bottom = (top + $(this).parent().height());
        if (y >= top && y < bottom) {
          $(this).addClass('fixed');
        } else {
          $(this).removeClass('fixed');
        }
      });  
  });
});

如果您可以修复脚本或者使用另一个可以顺利运行的脚本,我会非常高兴! 我对动画运动或其他效果持开放态度,只要它像现在一样平滑而不是跳跃 谢谢!

2 个答案:

答案 0 :(得分:2)

它出现故障/跳跃的原因是因为每次滚动时都会删除该类。试试这个:

$('.socialbookmarks2').each(function(){
  var top = $(this).offset().top - parseFloat($(this).css('marginTop').replace(/auto/, 0));
  var bottom = (top + $(this).parent().height());
  if (y >= top && y < bottom) {
    $('.socialbookmarks2').removeClass('fixed');
    $(this).addClass('fixed');
  }
}); 

您还可以更改y值中的比较,以使div转换更加无缝。但我会让你玩这个。这是一个小提琴,http://jsfiddle.net/66MBH/2/

示例:

if ( (y+30) >= top && y < bottom)

答案 1 :(得分:0)

您可以使用var elm=$(this);进行首次查找,并在同一范围内更改$(this)之后的所有var top = elm.offset().top - parseFloat(elm.css(...,以使$(this)变得更顺畅 到目前为止,您的代码必须重新引导并重新标记{{1}}是什么