皆さんこんにちは。私は csdn のブロガーです: lqj_ 自身
これは私の個人的なブログのホームページです。
lqj_I_Python 人工知能ビジョン (opencv) 入門から実戦まで、フロントエンド、WeChat アプレット - CSDN ブログ
最新のuniapp卒業デザインコラムも以下に掲載しています。
https://blog.csdn.net/lbcyllqj/category_12346639.html?spm=1001.2014.3001.5482
普段Bilibili動画でよく使っていることについても解説していきますので、
ビリビリへようこそ:
スクロール動作
vue-router
ルートが切り替わったときのページのスクロール方法をカスタマイズできます。たとえば、新しいルートにジャンプすると、ページは特定の位置までスクロールし、ルートを切り替えると、ページは前のスクロール位置に戻ります。
ルーティング インスタンスを作成するときは、scrollBehavior
メソッドを指定するだけで済みます。
const router = createRouter({
history: createWebHashHistory(),
routes: [...],
scrollBehavior (to, from, savedPosition) {
// return 期望滚动到哪个的位置
}
})
scrollBehavior
関数はオブジェクトを受信しto
て from
ルーティングします。3 番目のパラメータは、savedPosition
これがナビゲーション (ブラウザの戻る/進むボタンを押すか、メソッドを呼び出す)の場合にのみpopstate
使用できます。router.go()
一定の距離までスクロールします
この関数はScrollToOptions
位置オブジェクトを返すことができます。
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
// 始终滚动到顶部
return { top: 0 }
},
})
要素の位置までスクロールします
el
を介して CSS セレクターまたは DOM 要素を渡すこともできます。この場合、top
および はleft
要素への相対オフセットとして扱われます。
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
// 始终在元素 #main 上方滚动 10px
return {
// 也可以这么写
// el: document.getElementById('main'),
el: '#main',
top: -10,
}
},
})
アンカー位置までスクロールします
「アンカーまでスクロール」をシミュレートすることもできます。
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return {
el: to.hash,
}
}
},
})
前の位置までスクロールする
Back savedPosition
、ブラウザ后退/前进
ボタンが押されるかrouter.go()
メソッドが呼び出されると、ページは前のスクロール位置に戻ります。
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { top: 0 }
}
},
})
ヒント: 偽の値、または空のオブジェクトが返された場合、スクロールは行われません。返されたオブジェクトに追加して、behavior: 'smooth'
スクロールをよりスムーズにすることもできます。
遅延スクロール
場合によっては、スクロール動作をすぐに実行したくない場合があります。たとえば、ページに遷移アニメーションがある場合、遷移が終了した後にスクロールを実行したいとします。これを行うには、Promise を返すことができます。
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ left: 0, top: 0 })
}, 500)
})
}
})