[英]Increase/Decrease variable on scroll
有没有办法在用户向上滚动时增加变量,在用户向下滚动JavaScript时减少? 变量没有最大值或最小值,能够调整灵敏度会很好。 我不知道从哪里开始,谢谢你的帮助!
编辑:没有滚动条,因为页面的内容适合屏幕,没有额外的。 对不起,如果这引起任何混淆。
您可以使用window.scrollY
。 这是在从屏幕顶部的像素的距离,所以,如果你做-window.scrollY
得到它的增加 ,因为他们向上滚动,并减少 (变得更负),因为它们向下滚动,就像你问。
如果要调整灵敏度,可以将其除以任意值(在本例中为5
):
function getAdjustedScroll() {
const DIVIDE_AMOUNT = 5;
return -window.scrollY / DIVIDE_AMOUNT;
}
您还可以使用wheel
事件检测非滚动页面上的滚轮移动。
使用与原始类似的示例:
let scrollAmount = 0;
document.addEventListener('wheel', (event) => {
const DIVIDE_AMOUNT = 5;
scrollAmount += event.deltaY / DIVIDE_AMOUNT;
});
我想你正在寻找车轮事件 。 旋转鼠标滚轮或类似设备时会触发此事件,例如滚动时。 以下是如何使用它的示例:
var testDiv = document.getElementById("test-div"); var amount = 0; document.addEventListener("wheel", function(ev) { amount += ev.deltaY; testDiv.textContent = amount; });
<div id="test-div">SCORLL!</div>
笔记:
ev.deltaY
乘以代表灵敏度的数字: amount += 0.5 * ev.delta;
例如。 var testDiv = document.getElementById("test-div"); var amount = 0; document.addEventListener("wheel", function(ev) { amount += ev.deltaY; testDiv.textContent = 1000 * amount; });
<div id="test-div">SCORLL!</div>
ev.preventDefault()
来阻止实际滚动。 amount
变量仍将改变,但不会发生页面滚动。 var testDiv = document.getElementById("test-div"); var amount = 0; document.addEventListener("wheel", function(ev) { amount += ev.deltaY; testDiv.textContent = amount; ev.preventDefault(); });
<div id="test-div">SCORLL!</div>
就在这里。 通过使用getBoundingClientRect(); 方法有4个选项: - 顶部,左侧,底部和右侧。进一步阅读: https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
$("document").ready(function(){ $(window).scroll(function(){ let scrollValue = window.scrollY; let num = $("#num"); num.html(scrollValue); }); });
body { height: 2000px; text-align: center; } p { position: fixed; font-size: 70px; top: 0; }
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <p>Scroll to view <span id="num"></span></p>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.