gpt4 book ai didi

html - Vue.js 锚定到同一组件内的 div

转载 作者:太空狗 更新时间:2023-10-29 13:06:48 26 4
gpt4 key购买 nike

我正在开发一个 Vue.js 应用程序,但我无法将 anchor 链接到组件中的某个 div。

我有以下 anchor :

<a href="#porto" class="porto-button">Porto, Portugal</a>

和下面的 div:

<div id="porto" class="fl-porto">

我在散列模式下使用 vue-router。

问题是,每当我单击“porto-button”时,它都会将我重定向到“主页”页面 ( '/' )

我正在使用 Vue.js 1.X,我尝试使用历史记录模式(没有 hashbang 的 URL),但它在刷新页面时给我一个 cannot GET '/page' 错误。

我做错了什么吗?我该怎么办?

最佳答案

因为您在散列模式下使用路由器,您将无法轻松滚动,因为滚动到 /#something 实际上会将您重定向到“something”页面。

你必须自己模拟滚动行为,尝试做类似的事情:

//P.S. the code is written for Vue 2.
//You will have to adjust it to Vue 1.

//Your view:
<a class="porto-button" @click="scrollMeTo('porto')">Porto, Portugal</a>
...
<div ref="porto" class="fl-porto">
//Your code:
methods: {
scrollMeTo(refName) {
var element = this.$refs[refName];
var top = element.offsetTop;

window.scrollTo(0, top);
}
}

工作原理:

  1. 通过 ref 属性将引用设置为您要滚动到的元素;
  2. 编写一个函数,以编程方式将 window.scrollY 设置为引用元素的 top
  3. 工作完成:)

更新 1:

jsfiddle https://jsfiddle.net/5k4ptmqg/4/

更新 2:

似乎在 Vue 1 中 ref="name" 看起来像 el:name (docs) ,这是一个更新的例子:

https://jsfiddle.net/5y3pkoyz/2/

关于html - Vue.js 锚定到同一组件内的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42645964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com