我正在开发Vue.js应用程序,我很难将锚点链接到组件中的某个div.

我有以下主播:

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

以及以下部门:

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

我在哈希模式下使用vue路由.

每当"问题"出现时,我都会点击"主页"按钮

我在用Vue.js 1.我和Xtry 使用历史记录模式(URL不带hashbang),但刷新页面时会出现cannot GET '/page'个错误.

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

推荐答案

因为你在哈希模式下使用路由,你将无法轻松滚动,因为滚动到/#something实际上会将你重定向到"某物"页面.

您必须自己模拟滚动行为,try 这样做:

//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. 将references to ref属性设置为要滚动到的元素;
  2. 编写一个函数,通过编程将window.scrollY设置为引用元素的top.
  3. 工作完成:)

Update 1:

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

Update 2:

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

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

Vue.js相关问答推荐

如何在Vue 3中将动态特性从主零部件同步到子零部件

如何防止Nuxt3重新加载时滚动跳到网页顶部

有没有办法在 Quasar 中为明暗模式创建我自己的 colored颜色 ?

VSelect - Select 不适用于 Vuetify 3 中的自定义项目插槽

使用计算(computed)属性更改视图

:deep() 带有嵌套 scss 规则的语法

如何通过 setup() 发出多个参数?

vuex 未知动作类型:addTodo

Nuxt3-Vue中的useRoute和useRouter有什么区别

带有 netlify.toml 文件的环境变量

路径别名在 vue 脚本块中不起作用

即使响应为 200,也会调用 Axios Catch

eslint – 如何知道 defined定义规则的位置

在组件的样式部分使用 Vue 变量

如何为 Vue 项目设置 lint-staged?

vue-router的router-link实际刷新?

Axios-一次发出多个请求(vue.js)

Vue更改宽度和内容

动态注册本地 Vue.js 组件

是否可以从 vue-devtools 中排除 vue 事件和 vuex Mutations?