0

我使用Swup进行页面转换,想知道如何突出显示当前活动的链接。想象一下,我的页面结构如下:

<nav>
  <a href="/page-1">Page 1</a>
  <a href="/page-2">Page 2</a>
</nav>
<main id="swup">
  <!-- content -->
</main>

每次nav a点击后,页面内容都会被替换,但我希望当前活动的链接有不同的样式。

谢谢你的帮助!

4

1 回答 1

0

您可以使用 SwupcontentReplaced挂钩来侦听已完成的页面加载,遍历与指定选择器匹配的所有链接,并检查它们的 href 是否与当前 url 相同。

function swupActiveLinks(){
    let currentPath = window.location.pathname;
    let links = document.querySelectorAll('nav a'); // <- put your link selector here
    for (const link of links) {
        let linkPath = (new URL( link.href )).pathname;
        link.ariaCurrent = linkPath == currentPath ? 'page' : false;
    }
}
swup.on('contentReplaced', () => {
    swupActiveLinks(); // trigger after swup
});
swupActiveLinks(); // trigger on page load

然后设置所有当前链接的样式:

nav a[aria-current=page]{
  text-decoration: underline;
}
于 2022-02-03T11:49:13.333 回答