【发布时间】:2017-12-25 08:12:59
【问题描述】:
我正在寻找一种使用 Vue Router 处理页内锚点的智能方法。考虑以下几点:
<router-link to="#app">Apply Now</router-link>
<!-- some HTML markup in between... -->
<div id="app">...</div>
“滚动到锚点”行为described in the docs 工作正常,除了:
- 当您单击锚点时,它会将您带到
div id="app"。现在从div滚动到锚点并再次尝试单击它——这次您将不会跳到div。事实上,anchor 会保留router-link-active类,并且 URL 仍然会包含哈希/#app; - 通过上述步骤,如果刷新页面(URL 仍将包含哈希)并单击锚点,也不会发生任何事情。
从用户体验的角度来看,这是非常不幸的,因为潜在客户必须再次手动向下滚动才能到达应用程序部分。
我想知道 Vue Router 是否涵盖了这种情况。作为参考,这是我的路由器:
export default new VueRouter({
routes,
mode: 'history',
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return { selector: to.hash }
} else if (savedPosition) {
return savedPosition;
} else {
return { x: 0, y: 0 }
}
}
})
【问题讨论】:
标签: vue.js vuejs2 vue-router