javascript - 固定位置停止在某个div或某个位置

标签 javascript jquery scroll offset

我需要停止一个在接触另一个元素之前在滚动上获得固定位置的div,基本上让它回到某个位置的绝对位置,这应该适用于任何尺寸的屏幕。我有一个带有代码的 jsfiddle,有两个元素,如果您知道答案,请查看示例并提供帮助,谢谢!

var navTop = $('#nav').offset().top;
var lastMode = "absolute";

$(window).scroll(function(){
var mode;
if ($(this).scrollTop() >= navTop) {
    mode = 'fixed';
} else {
    mode = 'absolute';
}

if(lastMode !== mode) {
    if (mode == 'fixed') {
        $('#nav').css('position', 'fixed');
        $('#nav').css('top', '0');
    } else {
        $('#nav').css('position', 'absolute');
        $('#nav').css('top', navTop);
    }
    lastMode = mode;
}
});

https://jsfiddle.net/Zygimantas10/vro3LLu9/

如果不清楚,请告诉我。

最佳答案

像这样吗?

var navTop = $('#nav').offset().top;
var navStop = $('#stop').offset().top;
var lastMode = "absolute";

$(window).scroll(function() {
  var mode;
  if ($(this).scrollTop() >= navTop) {
    if ($(this).scrollTop() - navStop + $('#nav').height() > 0)
      mode = 'absolute';
    else
      mode = 'fixed';
  } else {
    mode = 'absolute';
  }

  if (lastMode !== mode) {
    if (mode == 'fixed') {
      $('#nav').css('position', 'fixed');
      $('#nav').css('top', '0');
    } else {
      $('#nav').css('position', 'absolute');
      $('#nav').css('top', navTop);
    }
    lastMode = mode;
  }
});
#nav {
  background: rgba(0, 0, 0, 0.5);
  position: absolute;
  top: 200px;
  width: 100px;
  height: 50px;
}

#stop {
  width: 100%;
  background: blue;
  height: 300px;
  position: absolute;
  top: 900px;
  margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body style="height:5000px;">
  <div id="nav"></div>
  <div id="stop"></div>
</body>

关于javascript - 固定位置停止在某个div或某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45328251/

相关文章:

android - 当它到达 android 中的屏幕顶部时,是否可以滚动并粘贴为标题?

javascript - 如何使用 JavaScript 的 RegExp 执行条件替换?

javascript - 多选数据表中的行,如何从JSON获取一列数据到php

javascript - jquery 下拉列表

javascript - <li> 标签可以使用 Modal 吗?

java - org.springframework.web.bind.MissingServletRequestParameterException : Required String parameter 'text' is not present

javascript - PHP 或 jQuery 输入更改文本

javascript - md-tab 中 Angular-Datatables 的滚动功能

html - flex 元素和水平滚动的问题

用于操作的 Javascript DOM 树复制