作為vue的初級使用者,在開發(fā)過程中遇到的坑太多了。在看頁面的時候發(fā)現(xiàn)了頁面滾動的問題,當(dāng)一個頁面滾動了,點(diǎn)擊頁面上的路由調(diào)到下一個頁面時,跳轉(zhuǎn)后的頁面也是滾動的,滾動條并不是在頁面的頂部。
最開始我使用了一個很笨的方法,每個頁面上都加上window.scrollTop(0,0);來解決問題,但是這個太繁瑣了。最后和小伙伴們商量了一下,在main.js頁面上加了這么一段代碼
router.afterEach(function (to) { window.scrollTo(0, 0) })
路由跳轉(zhuǎn)后就不會出現(xiàn)滾動的問題了。
但是這種做法是不友好的,我們可以使用scrollBehavior (to, from, savedPosition) {}來解決問題。
在我們寫路由的時候做個處理,如下
import Vue from 'vue' import Router from 'vue-router' Vue.use(Router); Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: resolve => require(['../components/HelloWorld.vue'],resolve) } ], scrollBehavior (to, from, savedPosition) { if (savedPosition) { return savedPosition } else { return { x: 0, y: 0 } } } })
scrollBehavior 方法接收 to 和 from 路由對象。第三個參數(shù) savedPosition 當(dāng)且僅當(dāng) popstate 導(dǎo)航 (通過瀏覽器的 前進(jìn)/后退 按鈕觸發(fā)) 時才可用。它的使用有很多種,可以試試。
以上這篇解決vue單頁路由跳轉(zhuǎn)后scrollTop的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com