我从另一篇文章中复制了这个,不是盲目的,我可以看到它的作用,但我想不出解决问题的方法。我不太精通 JavaScript,但我可以阅读这段代码。
// The function actually applying the offset
function offsetAnchor() {
if (location.hash.length !== 0) {
window.scrollTo(window.scrollX, window.scrollY - 100);
}
}
// This will capture hash changes while on the page
$(window).on("hashchange", function() {
offsetAnchor();
});
// This is here so that when you enter the page with a hash,
// it can provide the offset in that case too. Having a timeout
// seems necessary to allow the browser to jump to the anchor first.
window.setTimeout(function() {
offsetAnchor();
}, 3);
;(function($) {
$('.swipebox').swipebox();
})(jQuery);
问题是,当我滚动到带有用于 anchor 的 ID 的 DIV 时,我向下滚动得稍微太远,因为我有一个粘性标题。我尝试使用这个,所以当更改 DIV 时,它会考虑粘性标题,它并不完全工作完美,但我遇到的主要问题是,我将有超过 12 个导航 DIV id,并且每次单击其中任何一个时它不再转到 DIV,而是仅向上滚动 -100 像素。
我本质上需要一个解决方案,它将滚动到我需要它的上方,而不影响我的菜单功能的其余部分,它不必通过 JS 来实现,但这是我可以看到解决方案的唯一可行的方法(我已经尝试过只考虑一个 CSS,但边距/填充在这种滚动情况下无济于事)
要提供最后一个细节,当单击导航 div 时,它将滚动到该 div,并且菜单(粘性标题)将覆盖一些图像以及滚动的元素的内容。主要问题:)
如果您想要更好的描述,我可以留下一个链接,并且我目前正在学习 JS,但由于这是针对客户的,我希望能够及时修复它,并且将不胜感激任何人都可以提供的任何和所有帮助。
谢谢。
最佳答案
在 this question有一个跳转到某个元素的答案。
如果你想要平滑滚动:look here.
关于Javascript Div 滚动 - 一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33118177/