我使用斯瓦普进行页面转换,并想知道如何突出显示当前活动的链接。假设我有一个页面结构,如下所示:
<nav>
<a href="/page-1">Page 1</a>
<a href="/page-2">Page 2</a>
</nav>
<main id="swup">
<!-- content -->
</main>每次单击nav a后,页面内容将被替换,但我希望对当前活动的链接具有不同的样式。
谢谢你的帮助!
发布于 2022-02-03 11:49:13
您可以使用Swup contentReplaced钩子侦听已完成的页面加载,循环遍历与指定选择器匹配的所有链接,并检查它们的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;
}https://stackoverflow.com/questions/70970750
复制相似问题