如何使用 Aurelia 通过单击内部锚链接保持在同一页面上?

Posted

技术标签:

【中文标题】如何使用 Aurelia 通过单击内部锚链接保持在同一页面上?【英文标题】:How do I keep on the same page by clicking on internal anchor links, using Aurelia? 【发布时间】:2019-07-02 18:27:54 【问题描述】:

我正在为一个项目编写样式指南,目前我希望在锚链接上有一个基本的点击行为,以便它们滚动到对应的 id。

举个例子:

<a href="#section"></a>

向下滚动到:

<div id="section"></div>

在 Aurelia 中,默认行为是将链接视为路由。我无法使用内部链接,因为它会立即将我转到外部页面。

有人知道如何解决这个问题吗?谢谢!

【问题讨论】:

【参考方案1】:

根据documentation,您可以通过几种不同的方式禁用 Aurelia 路由器劫持链接。其中一种方法是使用以下特殊属性之一:

<a href="/some/link" download>Skip Hijacking</a>
<a href="/some/link" download="">Skip Hijacking</a>
<a href="/some/link" router-ignore>Skip Hijacking</a>
<a href="/some/link" router-ignore="">Skip Hijacking</a>
<a href="/some/link" data-router-ignore>Skip Hijacking</a>
<a href="/some/link" data-router-ignore="">Skip Hijacking</a>

【讨论】:

非常感谢。路由器忽略就像一个魅力;)【参考方案2】:

只需向您的链接添加一个点击事件处理程序并使用scrollIntoView()。

这是一个工作小提琴,在全屏页面中打开它来测试它:)

document.getElementById('myLink').onclick = function(e)
  document.getElementById('myDiv').scrollIntoView();
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
</head>
<body>
<a id="myLink">Click me!</a>
    <br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
  <div id="myDiv">Hi there!</div>
</body>
</html>

【讨论】:

感谢您的回答,虽然这不是我想采用的方法:) 但它也很有效。 没问题,我很高兴 :)

以上是关于如何使用 Aurelia 通过单击内部锚链接保持在同一页面上?的主要内容,如果未能解决你的问题,请参考以下文章

Java HtmlUnit 单击锚链接不起作用。如何获取新页面?

单击锚链接时平滑滚动

移动应用锚链接跳转到固定标题下方

单击锚链接时如何实现平滑滚动到不同页面上的部分?

单击锚链接时平滑滚动

Android Studio 如何在 LinearLayout 元素中实现锚链接?