javascript - 滚动时实时更新绝对定位的div

标签 javascript jquery scroll offset absolute

让我解释一下情况:

有一个相对定位的侧边栏。滚动经过main-content 顶部后,此侧边栏将更改为absolute,然后实时更新到窗口中的顶部位置(窗口的scrollTop)。

问题是它真的很慢而且不稳定(在 Firefox 中),因为它一直在更新。如何在没有如此大负载的情况下“实时”更新位置?

目前看起来像这样:

var headerOffset = $('#main-content').offset().top;
$(document).on('scroll', function() {
  if( ($(document).scrollTop() + 15) > $('#main-content').offset().top ){
    $('#sidebar').addClass('fixed');
    $('#sidebar').css('top', ( $(document).scrollTop() - headerOffset) + 15 );
  } else {
    $('#sidebar').removeClass('fixed');
  }
});

提前致谢:)

最佳答案

如果您想要解决所有 Javascript 麻烦,因为您有不可预测的 header 并且不知道主要内容的确切位置,那么将 ccs 设置为固定并只计算开始时的位置就足够了。

var headerOffset = $('#main-content').offset().top;
$('#sidebar').css('top', headerOffset);

就像这里:http://jsfiddle.net/4amdr/

这是我能想象为什么你不想使用固定顶部并忽略 js 的唯一方法。

关于javascript - 滚动时实时更新绝对定位的div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236657/

相关文章:

javascript - 同步ajax调用不会在chrome中触发beforesend事件

javascript - Chrome 上的向左滚动

javascript - 使用 Ajax 在运行时加载 JavaScript

javascript - 如何在用户滚动到页面底部时只加载一次数据?

javascript - 判断一个函数是用 null、undefined 还是非严格模式下的全局对象调用的

javascript - elevateZoom 上的 BSCarousel 错误

javascript - 页面重新加载背景位置上的 Stellar.js 出错

javascript - 禁用 iOS flex 体滚动并保持 native 滚动工作

javascript - 防止 child @click vue.js

javascript - 有人可以解释为什么/如何不需要在 Action 创建者中为同步函数分派(dispatch) Action 吗?