This commit is contained in:
syuilo 2020-02-06 18:25:25 +09:00
parent 1b7a601d27
commit 0e29e864c8
2 changed files with 7 additions and 4 deletions

View File

@ -76,7 +76,7 @@
<div class="contents"> <div class="contents">
<main ref="main"> <main ref="main">
<div class="content"> <div class="content">
<transition name="page" mode="out-in"> <transition name="page" mode="out-in" @enter="onTransition">
<keep-alive :include="['index']"> <keep-alive :include="['index']">
<router-view></router-view> <router-view></router-view>
</keep-alive> </keep-alive>
@ -258,6 +258,10 @@ export default Vue.extend({
if (this.canBack) window.history.back(); if (this.canBack) window.history.back();
}, },
onTransition() {
if (window._scroll) window._scroll();
},
post() { post() {
this.$root.post(); this.$root.post();
}, },

View File

@ -56,13 +56,12 @@ export const router = new VueRouter({
// 通常の使い方をすると scroll メソッドの behavior を設定できないため、自前で window.scroll するようにする // 通常の使い方をすると scroll メソッドの behavior を設定できないため、自前で window.scroll するようにする
// setTimeout しないと、アニメーション(トランジション)の関係でうまく動かない // setTimeout しないと、アニメーション(トランジション)の関係でうまく動かない
scrollBehavior(to, from, savedPosition) { scrollBehavior(to, from, savedPosition) {
setTimeout(() => { window._scroll = () => { // さらにHacky
if (savedPosition) { if (savedPosition) {
window.scroll({ top: savedPosition.y, behavior: 'instant' }); window.scroll({ top: savedPosition.y, behavior: 'instant' });
} else { } else {
window.scroll({ top: 0, behavior: 'instant' }); window.scroll({ top: 0, behavior: 'instant' });
} }
}, 600); };
return;
} }
}); });