与锚链接到其他页面(href)

问题描述 投票:3回答:3

我有一个带有工作锚的页面,如下所示:

<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”。

该网站基于引导程序模板,可能会对全屏标题图像造成一些干扰-我希望您能找到解决问题的任何提示!

html anchor href
3个回答
3
投票

您有大量的JS延迟了页面的加载。浏览器在初始加载时查找#ta-services,但没有看到它,因此它停止了。

所有内容加载完成后,您需要使用JS滚动到该位置。您可以使用一些看起来像这样的JS来做到这一点:

document.getElementById('id').scrollIntoView({
  behavior: 'smooth'
});

将其放入您的JS,以便在页面加载后运行。如果您还没有这样的东西,可以使用:

document.addEventListener('DOMContentLoaded', function(event) {
  // Scroll into view code here
});

0
投票

[添加以下脚本代码并更新“ 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>

0
投票

基于Caleb Anthony的回答:

页面加载后,您可以使用JavaScript滚动到#ta-services

document.addEventListener('load', function(event) {
    document.getElementById('ta-services').scrollIntoView({behavior: 'smooth'});
});

loadDOMContentLoaded事件之间的差异在here中解释为

load事件在加载整个页面(包括样式表和图像等所有相关资源)时触发。这与DOMContentLoaded相反,后者在页面DOM被加载后立即触发,而无需等待资源完成加载。

因此,当触发DOMContentLoaded事件时,元素的位置不是最终位置。

© www.soinside.com 2019 - 2024. All rights reserved.