javascript - 停止鼠标滚动到变量 ID 或类而不是像素数

标签 javascript jquery variables scrolltop jquery-pagescroller

我试图停止滚动变量而不是像素测量。

粉色是我页面的顶部,黄色没什么特别的,但红色是我试图使用变量调用我选择的 ID 来停止滚动操作的地方。用户应该仍然能够向上滚动,但永远不要滚动到红色 div 之外。

我发现了一些使用像素的示例,但我的页面改变了高度,因此我尝试使用变量而不是像素位置来定位 div 中的 id

我坏掉的 fiddle : http://jsfiddle.net/mikeloucas/d7o8exub/52/

附注我正在制作一个动画,所以我试图让用户保持在红色 div 上,直到他们单击“停止滚动”按钮。 (我让该部分在其他地方工作,而不是在这里,但它是基于像素的。)

$(document).ready(function() {
  var StartTop = $("#beginning").offset().top;

  /* $(document).scrollTop(StartTop); */
  var EndGame = $("#stopHere").height();

  $(document).on("scroll", function(e) {
    var windowScrollTop = $(window).scrollTop();
    if (windowScrollTop < EndGame) {
      $(document).scrollTop(EndGame);
    } else if (windowScrollTop > EndGame) {
      $(document).scrollTop(StartTop);
    }
  });
});
body {
  margin: 0;
}

#beginning {
  height: 200px;
  background: pink;
}

.genBox {
  height: 500px;
  background: yellow;
  width: 90%;
  margin: 0 auto;
}

#stopHere {
  height: 500px;
  background: red;
  width: 90%;
  margin: 0 auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="beginning"></div>
<div class="genBox"></div>
<div class="genBox"></div>
<div id="stopHere"></div>
<div class="genBox"></div>

最佳答案

如何根据div的位置设置滚动位置?不太确定这是否是您正在寻找的...

const lowDivTop = document.getElementById('low').getBoundingClientRect().top + window.scrollY
document.addEventListener('scroll', e => {
    window.scrollTo(0, Math.min( lowDivTop - window.innerHeight, window.scrollY));
})
#top, #mid, #low{
  width: 100px;
  height: 200px;
}
#top{
  background: yellow
}
#mid{
  background: orange
}
#low{
  background: red
}
<div id='top'></div>
<div id='mid'></div>
<div id='low'></div>

关于javascript - 停止鼠标滚动到变量 ID 或类而不是像素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60081434/

相关文章:

javascript - 如何在鼠标向下滚动时使 div 滚动速度比 html 的其余部分更快?

javascript - 在 D3.js 中使用数据连接处理元素的删除

javascript - Knockoutjs div 绑定(bind)未按预期工作

javascript - 使用 updateFromJS 会在应该添加值时替换值

javascript - Woocommerce 加/减数量按钮更改值但实际上不起作用

javascript - Internet Explorer 跟踪保护阻止 JQuery 和其他库加载

php - Jquery、ajax 和符号难题

java - Cplex Java API 中变量的生成

variables - 何时应终止 Excel VBA 变量或将其设置为 Nothing?

javascript - 如何在android webview中优化渲染速度