有没有一种方法可以在用户向上滚动时增加变量,而在用户使用JavaScript向下滚动时减小变量?变量没有最大值或最小值,因此能够调节灵敏度会很好。我不知道从哪里开始,谢谢您的帮助!
编辑: 没有滚动条,因为页面的内容适合屏幕显示,没有任何多余的内容。对不起,如果引起任何混乱。
答案 0 :(得分:2)
您可以使用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;
});
答案 1 :(得分:1)
我认为您正在寻找wheel event。例如,当您旋转鼠标滚轮或类似设备进行滚动时,会触发此事件。这是一个使用方法的示例:
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>
答案 2 :(得分:0)
是的。通过使用getBoundingClientRect();该方法具有4个选项:-顶部,左侧,底部和右侧。进一步阅读:https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
答案 3 :(得分:0)
$("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>