javascript - 我怎样才能制作一个像窗口滚动控制系统一样的 friend 圈?

标签 javascript jquery scroll real-time friendfeed

当你激活实时更新时,新条目动态添加一个div。在这个阶段滚动是自动移动的。此操作提供您不会错过可见区域的内容。

如果你想看这个 Action ,你也可以看这个截屏视频; http://www.viddler.com/explore/itod/videos/45/

我的方法;

    // Firstly, i am storing the first entry's(in view) positions in window object;
jQuery(window).scroll(function() { 
  var q = 0;
  jQuery(".entry").each(function (i) {
    if (jQuery(this).offset().top > jQuery(window).scrollTop()) {
      if (q == 0) {
      window.show_id = jQuery(this).attr("id");
      window.pos_y = jQuery(this).offset().top - jQuery(window).scrollTop();
      q = 1;
      }
    }
  });
    });

// After coming to the new entry, i call this function;
function scroll_control() {
  var scroll_top = jQuery(window).scrollTop();
  if (scroll_top != 0) {
    if (jQuery('#'+window.show_id).length != 0) {
      var scr = jQuery('#'+window.show_id).offset().top - window.pos_y;
      window.scrollTo(0, scr);
    }
  }
}

// but this is due to flashing. I guess not fast enough

最佳答案

我假设您希望平滑地滚动到顶部而不是跳转以解决“闪烁”问题。我会做这样的事情:

function scroll_control() {
  var scroll_top = jQuery(window).scrollTop();
  if (scroll_top != 0) {
    if (jQuery('#'+window.show_id).length != 0) {
       var scr = jQuery('#'+window.show_id).offset().top - window.pos_y;
       // Instead of jumping to src use jQuery animate
       // window.scrollTo(0, scr);
       var scrollElem = scrollableElement('html', 'body');
       $(scrollElem).animate({scrollTop: scr}, 400);
    }
  }
}

/* 
 * Use the first element that is "scrollable"  (cross-browser fix?)
 * http://css-tricks.com/snippets/jquery/smooth-scrolling/
 */
function scrollableElement(els) {
for (var i = 0, argLength = arguments.length; i <argLength; i++) {
    var el = arguments[i],
    $scrollElement = $(el);
    if ($scrollElement.scrollTop()> 0) {
        return el;
    } else {
        $scrollElement.scrollTop(1);
        var isScrollable = $scrollElement.scrollTop()> 0;
        $scrollElement.scrollTop(0);
        if (isScrollable) {
            return el;
        }
    }
}
return [];
}

关于javascript - 我怎样才能制作一个像窗口滚动控制系统一样的 friend 圈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960899/

相关文章:

javascript - 如何在 d3.js 中移动圆圈(数据点)

javascript - 撤消单个元素上的常规 preventDefault?

jquery - 通过 jquery 使用类时消除 Visual Studio 2008 中的 CSS 警告

jquery - Angular 上的颜色边框单独

vba - 使我的解析器向下滚动时出现问题

javascript - Safari 浏览器中页面/窗口滚动时出现 Div “flickers”

javascript - anchor 滚动功能干扰滚动事件监听器逻辑以隐藏/显示 "back to top"按钮

javascript - Jquery toggleclass 不起作用

javascript - 在javascript中读取excel正在将长数字转换为指数

javascript - 使用 JQuery 和 AJAX 从 Aspx 页面返回数据