javascript - 在带滚动条的 div 内滚动侧边栏 - $(window).on ('scroll' , function()?

标签 javascript jquery html css

我希望我的社交侧边栏仅在灰色 div 内滚动。我已经将侧边栏放在灰色div内,不超过页脚或上面的内容。我的困难是侧边栏滚动伴随滚动而不变成灰色 div。

http://test.eae.pt/beautyacademy/angebot/

JS:

beautyAcademy.sharer = {
element: void 0,
elementToScroll: void 0,
init:function() {
    this.element = $('.js-sharer-ref');
    console.log(this.element.length);
    if(this.element.length != 1) {
        return;
    }
    this.build();
},
build: function() {
    this.binds();
},
binds: function() {
    var _this = this;
    // Element that's gonna scroll
    this.$elementToScroll = $('.fixed-social');

    // Element that's gonna scroll height
    this.elementToScrollHeight = this.$elementToScroll.outerHeight();

    // Element where scroll is gonna happen Height
    this.elementHeight = this.element.outerHeight();

    // Element where scroll is gonna happen distance to top
    this.elementOffsetTop = this.element.offset().top;

    // Scroll that was done on the page
    this.windowScrollTop = $(window).scrollTop();

    this.elementOffsetBottom = this.elementOffsetTop + this.elementHeight - this.elementToScrollHeight;

    this.$elementToScroll.css('top', (_this.elementOffsetTop+80) + "px");

    $(window).on('scroll', function() {
       if(this.windowScrollTop +  this.elementToScrollHeight < this.elementHeight  )
           this.$elementToScroll.css('margin-top',  this.windowScrollTop );
    });
}
};

最佳答案

您需要尝试如下:

 $(function(){
   if ($('#container').length) {
      var el = $('#container');
      var stickyTop = $('#container').offset().top; // returns number
      var stickyHeight = $('#container').height();

      $(window).scroll(function(){ // scroll event
          var limit = $('#footer').offset().top - stickyHeight - 20;

          var windowTop = $(window).scrollTop(); // returns number

          if (stickyTop < windowTop){
             el.css({ position: 'fixed', top: 0 });
          }
          else {
             el.css('position','static');
          }

          if (limit < windowTop) {
          var diff = limit - windowTop;
          el.css({top: diff});
          }
        });
   }
});

DEMO

关于javascript - 在带滚动条的 div 内滚动侧边栏 - $(window).on ('scroll' , function()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350491/

相关文章:

javascript - AngularJS tdd 与 Jasmine 错误 : Cannot read property '$injector' of undefined

javascript - Angular.JS : views sharing same controller, 模型数据在更改 View 时重置

javascript - 在 JS 中抓取 html 表单数据

javascript - jQuery 跨域发布重定向

Javascript(元素、选项)模式

javascript - 如何使用 Javascript 或 jQuery 从链接字符串中提取基本 URL?

javascript - 想把这个弹窗效果做成插件

Javascript:幻灯片点击时不滑动

html - Div 容器宽度的 100% 减去 nav div

javascript - 给 Canvas 添加点击事件或制作区域图