当前位置: 首页 > 知识库问答 >
问题:

Vue3js路由器链接到哈希,偏移量值基于标头

鲜于璞瑜
2023-03-14

我有以下情况,我想在导航菜单中创建带有哈希的路由器链接,这些哈希指向页面的某个部分,但带有页眉高度的偏移量,例如300px。除了header top属性被忽略之外,其他一切都正常工作。哈希链接到达页面上所需的位置,但不是所需的300px offest from标头。即使我将样式中的top属性设置为-300px。我做错了什么?

我的Header组件中的示例链接:

<router-link :to="{ name: 'Home', hash: '#desired-position' }">LINK</router-link>

这将导致Home component中的此部分:

<section>
  <a class="anchor" id="desired-position"></a>
  <img src="../assets/pics/contact.webp" alt="contact" class="contact-img" />
  <div class="content">
    <h2>Header</h2>
     <p>Lorem ipsum</p>
  </div>
</section>

我把锚设计成这样:

 .anchor {
  display: block;
  position: relative;
  top: -300px; // Header Height
  visibility: hidden;
}

我在路由器索引中的滚动行为。详情如下:

scrollBehavior (to, from, savedPosition) {
if (to.hash) {
  const element = document.getElementById(to.hash.replace(/#/, ''))
  if (element && element.scrollIntoView) {
    element.scrollIntoView({ block: 'end', behavior: 'smooth' })
  }
  return { el: to.hash }
} else if (savedPosition) {
  return savedPosition
}
return { top: 0 }

非常感谢。

共有1个答案

黄俊誉
2023-03-14

您可以通过在路由器index.js文件中添加top属性和el属性来实现这一点。文献资料

scrollBehavior(to, from, savedPosition) {
  if (savedPosition) {
    return savedPosition;
  }
  if (to.hash) {
    return { el: to.hash, top: 300 };
  }
  return { x: 0, y: 0 };
}
 类似资料:
  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此哈希添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发请求

  • 我正在尝试在我的nginx服务器上设置vue路由器。我遇到的问题是,如果我直接在浏览器中输入url,我的路线就不起作用。 我尝试了vue路由器文档中描述的服务器配置,以及建议的堆栈溢出类似配置。我当前的nginx位置配置如下: 所做的就是将任何路径重定向到我的根组件(path:),而不是。这确实有意义,并且似乎只重定向到索引文件。我如何重定向直接链接的到路由在我的VueJS应用程序? 以下是我的v

  • 我可以检查对象中的值并基于此进行路由吗(就像写到不同的文件一样?)。我可以在pojo中添加注释以避免final json中的字段 我想到了将object转换为json,然后发送到Queue。然后我可以使用jsonpath进行条件路由。但是,我怎样才能从final JSON中省略一个字段呢?

  • 我正在使用React路由器与链接,以改变URL和导航通过应用程序。在阅读列表中,我使用以下代码导航用户阅读edit: 我定义了以下路由: 我怎样才能解决那个问题?

  • 问题内容: 在删除井号之前,我已经 这些工作正常 删除井号后,我将其添加到index.html 和index.js 现在点击重定向到 但直接在浏览器中返回404以及其他页面 我应该怎么做才能解决这个问题? 我的后端是Java 问题答案: 那是意料之中的。以下是未打开html5时发生的情况: 您在地址栏中输入网址 浏览器向localhost:8080 / index.html发出http请求,并获取

  • 问题内容: 我正在使用网络爬虫(请不要建议现有的,这不是一种选择)。我按照预期的方式工作。我唯一的问题是,当前我正在使用一种服务器/客户端模型,其中服务器进行爬网和处理数据,然后将其放置在中央位置。 此位置是从我编写的类创建的对象。在内部,该类维护一个定义为 我将数据存储在地图中,使网址成为键(我保持这些网址唯一),而hasmap值存储该网址的相应数据字段,例如标题,值等 我偶尔会序列化所使用的内