Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

「新型コロナウイルス感染症が心配なときに」のページでボタンをクリックすると、サイドメニューのリンクの色がアクティブではなくなる #3958

Closed
munierujp opened this issue May 7, 2020 · 2 comments · Fixed by #3970
Labels
bug バグ。本来あるべき動作をしていないもの

Comments

@munierujp
Copy link
Contributor

munierujp commented May 7, 2020

起こっている問題 / The Problem

  • 「新型コロナウイルス感染症が心配なときに」のページで、「かかりつけ医がいて症状のある方」「かかりつけ医がいない症状のある方」「軽い症状があり不安のある方」のいずれかのボタンをクリックすると、サイドメニューの「新型コロナウイルス感染症が心配なときに」の色がアクティブ(#008830)ではなくなる
    • これらのボタンはページ内リンクになっているので、クリックするとURLにハッシュ(それぞれ#sydr#sy#anx)がつく
    • サイドメニューで使用しているMenuList.vueコンポーネントでは、CSSで.nuxt-link-exact-activeに対して色をつけている
    • ハッシュがついたことによりURLが一致しなくなった結果、リンクがアクティブではなくなる

スクリーンショット / Screenshot

GIF

画面収録 2020-05-07 19 04 13 mov

期待する見せ方・挙動 / Expected Behavior

  • 「新型コロナウイルス感染症が心配なときに」のページでボタンをクリックしても、サイドメニューの「新型コロナウイルス感染症が心配なときに」の色がアクティブなままになっている

起こっている問題の再現手段 / Steps to Reproduce

  1. 「新型コロナウイルス感染症が心配なときに」のページを開く
  2. 「かかりつけ医がいて症状のある方」「かかりつけ医がいない症状のある方」「軽い症状があり不安のある方」のいずれかのボタンをクリックする
  3. サイドメニューの 「新型コロナウイルス感染症が心配なときに」の色がアクティブではなくなる

動作環境・ブラウザ / Environment

  • macOS Catalina 10.15.4
  • Google Chrome バージョン: 80.0.3987.163(Official Build) (64 ビット)

原因が環境依存ではないので、他の環境においても再現するものと思われます。

解決策 / How to resolve

いくつかの解決策が考えられます。

A: リンクのアクティブ判定を修正

https://stopcovid19.metro.tokyo.lg.jp/flow/#sydrhttps://stopcovid19.metro.tokyo.lg.jp/flow/#syのようにURLのハッシュが異なっていても、パスさえ一致すれば同一のページとして扱うようにリンクのアクティブ判定を修正します。
Vue Router自体に、この問題についてのイシューおよびRFCがあがっています。

しかしながら、これがVue Routerに取り込まれるのには時間を要すると思われます。
ワークアラウンドとしては、リンクがアクティブかどうかの判定処理を独自に実装する手法があります。

完全なURL(例:https://stopcovid19.metro.tokyo.lg.jp/flow/#sydr)ではなくURLからハッシュを除いたもの(例:https://stopcovid19.metro.tokyo.lg.jp/flow/)の一致で判定すればいいので、location.origin + location.pathnameを現在のURLとして使用すればよさそうです。

B: ページ内リンクにアンカーを使用しない

ページ内リンクをアンカーではなく、特定の要素(コンポーネント)の位置にスクロールすることで実現します。
ボタンをクリックしてもURLにハッシュがつかないため、リンクはアクティブなままになります。

@munierujp munierujp added the bug バグ。本来あるべき動作をしていないもの label May 7, 2020
@mcdmaster
Copy link
Contributor

やってみますね。ページ内リンク(アンカー)のせいで、お作法が変わってしまったと思われます

@munierujp
Copy link
Contributor Author

@mcdmaster おお、すでにvue-scrolltoを使って実装されていたのですね。変更内容が軽微で済みそうでよかったです。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug バグ。本来あるべき動作をしていないもの
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants