我在单个网页上有一个菜单,其链接将页面移动到具有相应ID的部分。但是,有一个粘性标题覆盖了每个部分的顶部,所以我想略微滚动以进行补偿。页面跳转到锚点后移动屏幕滚动位置?
我试图确定一种方法,在页面移动到一个部分后,将页面滚动50px 。我尝试在每个链接上执行一个.click()
事件侦听器,但似乎在发出回调后移动页面,否定了我尝试滚动的操作。
我的代码如下所示:
HTML:
<ul id="menu">
<li id="menu-item-1"><a href="#1">1</a></li>
<li id="menu-item-2"><a href="#2">2</a></li>
<li id="menu-item-3"><a href="#3">3</a></li>
<li id="menu-item-4"><a href="#4">4</a></li>
</ul>
JS:(两个内线在控制台工作,但不是在页面代码本身)
$('#menu-item-1 a').click(function(){
var y = $(window).scrollTop();
$(window).scrollTop(y-50);
});
有没有办法监听一个链接动作来完成,然后运行我的滚动代码?
我想这一点,但想看看是否有这样做一个更清洁的方式。我有过设置超时的经验,如果某个事件在不同的浏览器/计算机上以不同的速度发生,硬编码的时间限制可能不起作用。 – AKor
设置计时器为50毫秒应该工作......我很确定,如果这只是一个定位到页面内的div标签没有任何其他功能,它会比这更快 –