gpt4 book ai didi

javascript - 如何捕获由 hash bang anchor 链接引起的滚动事件?

转载 作者:行者123 更新时间:2023-12-01 02:04:27 24 4
gpt4 key购买 nike

我只是想知道是否有更好的方法来解决这个问题

所以,假设你有 jump to使用 anchor 标记的链接:

www.example.com/#about

打开该链接将使浏览器自动滚动到带有以下内容的部分

<div id="about"></div>

现在,我想捕获这个scroll事件,以便我可以添加更多 offset浏览器应使用多少滚动量。

这样做的原因是因为我有一个 fixed消耗120px的导航菜单浏览器的。

问候,

最佳答案

据我所知,无法直接拦截此行为,即没有与之关联的用户可访问事件。相反,window.location.hash 可供您使用。您可以找到关联的元素,并在页面加载后跳转到该元素。

例如像这样:

function jumpToElement(element, offset) {
if (!offset) offset = 0;
var verticalPos = element.offsetHeight;
window.scrollTo(0, verticalPos + offset);
}
function jumpToHash(offset) {
var hash = window.location.hash;
// Do nothing if no hash exists
if (typeof hash !== 'string' || !hash.length) return;
var targetElement = document.querySelector(hash);
// Do nothing if targetElement doesn't exist
if (!targetElement) return;
jumpToHash(targetElement, offset);
});
if (document.readyState === "complete") {
jumpToHash(-120); // with 120px
} else {
document.addEventListener("DOMContentLoaded", jumpToHash);
}

关于javascript - 如何捕获由 hash bang anchor 链接引起的滚动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50225660/

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