【问题标题】:How to scroll to a specific anchor using a router-link?如何使用路由器链接滚动到特定锚点?
【发布时间】: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


    【解决方案1】:

    我认为你在正确的道路上。

    但是你可能弄错了Routenamepath的用法。

    而不是

    <router-link :to="{ name: '/', hash: '#technology' }" >Technology</router-link>
    

    尝试使用path 而不是name

    <router-link :to="{ path: '/', hash: '#technology' }" >Technology</router-link>
    

    【讨论】:

    • 谢谢你,雅各布!没错,似乎我真的误解了路径和名称之间的区别。 :)) 谢谢!当然,我离我的目标又近了一大步。现在它重定向/路由到正确的页面/路径,但不会滚动到锚点。你知道如何实现吗?
    • 我刚刚使用 vue js 滚动到插件让它工作,但也许有一种方法可以在不需要插件的情况下实现同样的效果?这就是插件:github.com/rigor789/vue-scrollto?ref=madewithvuejs.com 而我所做的是:技术const Home = { template: '#home', mounted: function(){ if(this.$router.currentRoute['hash']){ Vue.use(VueScrollTo); VueScrollTo.scrollTo(this.$router.currentRoute['hash'], 500); } }}
    猜你喜欢
    • 2019-01-02
    • 2021-03-20
    • 1970-01-01
    • 2018-05-09
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多