【发布时间】:2019-05-18 13:08:29
【问题描述】:
我正在尝试使用 vue js 开发一个简单的网站,目前进展顺利,但我面临以下问题:
我正在使用路由器来更改页面,它可以工作,但我需要做的是:更改页面并滚动到特定的锚点。
我已经尝试过的:
效果很好: 路由到联系页面或主页
<router-link to="/contact">Contact</router-link>
<router-link to="/">Home</router-link>
不起作用:
<router-link :to="{ name: '/', hash: '#technology' }" >Technology</router-link>
最后一个仅在我位于主页时才有效,但每当我更改为联系页面并尝试路由到“/#technology”时,它都不起作用。它确实会尝试路由到“http://example.com/contact/#technology”而不是“http://example.com/#technology”。
如果我这样做,它只会滚动到顶部,而不是锚点:
<router-link to="/#technology" Technology</router-link>
我的路由器代码:
const routes = [
{ path: '/', component: Home },
{ path: '/contact', component: Contact }
]
const router = new VueRouter({
mode: 'history',
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition;
}
if (to.hash) {
return { selector: to.hash };
}
return { x: 0, y: 0 }
},
});
new Vue({
router,
}).$mount('#app');
模板看起来像这样(我确实删除了不必要的代码):
<template id="home">
<div>
Home
<div id="technology"> <!-- IT SHOULD SCROLL TO HERE -->
</div>
</template>
<template id="contact">
<div>
Contact Page
</div>
</template>
【问题讨论】:
标签: vue.js vue-router