我有一个带有工作锚的页面,如下所示:
<a class="nav-link" href="#ta-services">Leistungen</a>
...
<section class="border-top" id="ta-services">
在另一页上,我想在同一锚点位置链接到第一页。以我的理解,纯HTML应该可以实现:
<a class="nav-link" href="index.html#ta-services">Leistungen</a>
但是,该链接的工作方式类似于指向index.html的普通链接,该页面不会向下滚动。在http://elisabethzenz.at/impressum_datenschutz.html在线示例。右上角的链接名为“ Leistungen”。
该网站基于引导程序模板,可能会对全屏标题图像造成一些干扰-我希望您能找到解决问题的任何提示!
您有大量的JS延迟了页面的加载。浏览器在初始加载时查找#ta-services
,但没有看到它,因此它停止了。
所有内容加载完成后,您需要使用JS滚动到该位置。您可以使用一些看起来像这样的JS来做到这一点:
document.getElementById('id').scrollIntoView({
behavior: 'smooth'
});
将其放入您的JS,以便在页面加载后运行。如果您还没有这样的东西,可以使用:
document.addEventListener('DOMContentLoaded', function(event) {
// Scroll into view code here
});
[添加以下脚本代码并更新“ Leistungen”菜单的导航链接的html代码
$(document).on('click',"#goto-services",function(e) {
e.preventDefault();
$('html, body').animate({
scrollTop: $("#ta-services").offset().top
}, 'slow');
});
<a class="nav-link" href="#ta-services" id="goto-services">Leistungen</a>
基于Caleb Anthony的回答:
页面加载后,您可以使用JavaScript滚动到#ta-services
:
document.addEventListener('load', function(event) {
document.getElementById('ta-services').scrollIntoView({behavior: 'smooth'});
});
load
和DOMContentLoaded
事件之间的差异在here中解释为
load事件在加载整个页面(包括样式表和图像等所有相关资源)时触发。这与DOMContentLoaded相反,后者在页面DOM被加载后立即触发,而无需等待资源完成加载。
因此,当触发DOMContentLoaded
事件时,元素的位置不是最终位置。