Tech Blog

詳細遷移時に scrollTo(0, 0) と blur() を入れた理由

Vue3 TypeScript Frontend UX

はじめに

DVDレンタル顧客向けアプリで映画一覧から詳細画面に遷移したとき、以下の問題が発生していました。

  • スクロール位置が一覧の位置のまま残ってしまう
  • 選択したボタンにフォーカスが残留して見た目が悪い

作品詳細画面

解決策

遷移時のイベントハンドラに以下を追加しました。

window.scrollTo(0, 0)
;(event.target as HTMLElement).blur()

scrollTo(0, 0) を入れた理由

Vue Router を使わない currentPage 管理では、SPA の自動スクロールリセットが効かないため明示的に呼ぶ必要がある。

blur() を入れた理由

ボタンにフォーカスが残ったまま画面が切り替わると、アウトラインリングが残留してユーザーに違和感を与えるため。

学んだこと

SPA でルーターを使わない場合、本来フレームワークが自動処理してくれる UX 細部を手動で補う必要があります。

気軽にメッセージください

技術相談・ご感想・ご質問があればメッセージをお願いします。