gpt4 book ai didi

javascript - $(window).scrollTop() 的说法正确吗?

转载 作者:行者123 更新时间:2023-11-28 08:38:11 25 4
gpt4 key购买 nike

我正在尝试构建一个像这样的函数:

var t =$('#top');
var q1=$('#fe1');
var q2=$('#fe2');
var q3=$('#fe3');
var q4=$('#fe4');
var q5=$('#fe5');
var win = $(window);
var doc=$(document);
var wins = win.scrollTop();
var docs = doc.scrollTop();


function next (){
if (wins == docs) {
q1.ScrollTo();
}
else if (wins == q1.scrollTop()) {
q2.ScrollTo();
}
else if (wins == q2.scrollTop()) {
q3.ScrollTo();
}
else if (wins == q3.scrollTop()) {
q4.ScrollTo();
}
else if (wins == q4.scrollTop()) {
q5.ScrollTo();
}
}

我想滚动到下一部分。为此,代码会检查我所在的部分,以便它知道要滚动到哪个部分。但我认为 $(window).scrollTop() 不是我想要的。

我想要一个返回页面顶部和我所显示内容顶部之间距离的语句。也许我必须做更复杂的操作。你知道我怎样才能得到这个吗?

谢谢。

最佳答案

即使没有 jQuery 或类似的纯 JavaScript,这个问题也很容易解决。这是您的示例:

var next = (function (sections) {

function getTop(node) {
return node ? node.offsetTop + getTop(node.offsetParent) : 0;
}

return function () {
var i, nodeTop, top = window.pageYOffset;

for (i = 0; i < sections.length; i += 1) {
nodeTop = getTop(document.getElementById(sections[i]));
if (nodeTop > top) {
window.scrollTo(window.pageXOffset, nodeTop);
return;
}
}
};
}(['top', 'fe1', 'fe2', 'fe3', 'fe4', 'fe5']));

代码非常通用,因此您可以传递您想要的任何部分 ID(它们只需要以正确的顺序出现)。

我们在这里使用两个标准 DOM 属性/函数 window.pageYOffsetwindow.scrollTo() 来获取和设置窗口的垂直偏移量 (window.pageYOffset) 和 window.scrollTo() 。 pageXOffset 用于保持水平偏移相同)。为了获取部分开始的垂直偏移,我使用简单的递归定义了 getTop 函数(恕我直言,jQuery 使用类似的代码)。

结果函数 next() 在自调用闭包中定义,以隐藏实现和辅助函数。要在运行此代码后使用它,您只需调用

next();

我测试了这段代码,所以我非常有信心它可以工作:)。

关于javascript - $(window).scrollTop() 的说法正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com