Vue3js路由器链接到带有基于标头的偏移值的散列

Posted

技术标签:

【中文标题】Vue3js路由器链接到带有基于标头的偏移值的散列【英文标题】:Vue3js router link to hash with offset value based on header 【发布时间】:2021-10-17 19:30:38 【问题描述】:

我有以下情况,我想在导航菜单中创建带有散列的路由器链接,这些链接指向页面的某个部分,但标题高度的偏移量例如 300px。一切正常,除了标题顶部属性它有点被忽略。 哈希链接会转到页面上所需的位置,但不是所需的距标题 300 像素的距离。即使我将样式中的 top 属性设置为 -300px。我做错了什么?

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

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

这会导致 Home 组件中的此部分:

<section>
  <a class="anchor" id="desired-position"></a>
  <img src="../assets/pics/contact.webp"  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;

我在路由器 index.js 中的滚动行为如下:

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】:

您可以通过在路由器 index.js 文件中添加一个 top 属性和 el 属性来完成此操作。 Documentation

scrollBehavior(to, from, savedPosition) 
  if (savedPosition) 
    return savedPosition;
  
  if (to.hash) 
    return  el: to.hash, top: 300 ;
  
  return  x: 0, y: 0 ;

【讨论】:

以上是关于Vue3js路由器链接到带有基于标头的偏移值的散列的主要内容,如果未能解决你的问题,请参考以下文章

如何根据散列中的键/值查找键/值数据并将其添加到 Redis 中的散列?

小橙书阅读指南——散列表

如何合并散列数组以获取值数组的散列

什么是MD5

更新 UIView 会产生子视图对齐/Swift 的散列

磁力链接的开头“magnet:?xt=urn:btih:”是啥含义?