javascript - 根据窗口滚动更改 div 顶部边距

标签 javascript jquery scroll

我的页面顶部有一个位置固定的栏。当用户滚动到某个点时,我希望该栏开始向上移动,就好像它是相对或绝对定位的一样。

现在,栏的 css 从固定位置更改为绝对定位,但这当然会将 div 直接设置到页面顶部。

我已经研究这个问题很多年了,但无法理解如何为滚动超过 _triggerOffset 的每个像素一次将栏向上推一个像素

谁能启发我吗?

function banner(){

    var _barOffset = $('#top-bar').outerHeight(),
        _navOffset = $('#navigation').offset().top,
        _triggerOffset = _navOffset-_barOffset;

    $(window).scroll(function() {

        var _scroll = $(window).scrollTop();

        if (_scroll >= _triggerOffset) {
            $('#top-bar').css({'position':'absolute'});
        }

    });

}

banner();

最佳答案

我已经完成了 fiddle 。

检查这个 fiddle

<强> Working Demo

$(document).ready(function() {
  var postionToTriggerMove = 500;
  var positioninitial = $(window).scrollTop();
  var positioninitialLine = $(".line").offset().top;
  $(window).scroll(function() {
    var _scroll = $(window).scrollTop();
    if(_scroll > positioninitial) {        
       if(_scroll >= (postionToTriggerMove - 5) && _scroll <= (postionToTriggerMove + 5) )
          {
              var topBarPostion = $(".line").offset().top;
              $('.line').css({'position':'absolute',"top":topBarPostion});
          }
   }
   else {
       if(_scroll >= (postionToTriggerMove - 5) && _scroll <= (postionToTriggerMove + 5) )
          {
              var topBarPostion = $(".line").offset().top;
              $('.line').css({'position':'fixed',"top":positioninitialLine});
          }

  }
  positioninitial = _scroll;
  });

});

关于javascript - 根据窗口滚动更改 div 顶部边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481304/

相关文章:

javascript - 数据库的表组织

javascript - Sequelize : escape string in a literal string

javascript - 如何以编程方式触发使用 addEventListener 定义的 dblclick 事件?

jquery函数返回数组中的json值

jquery - iOS 不滚动 div

javascript - 从 javascript 打印变量

javascript - 为什么这个 setTimeout 代码会构建而不终止?

javascript - jQuery 选择器将值设置为同名的特定文本输入字段

css - 在 iPhone 上滚动我的网站时出现额外的 "Search web"

javascript - 使用 Javascript 滚动时导航栏淡入淡出动画