1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

overflow: hidden の要素内にアンカーリンクのゴールを置くと要素が上にズレることがある

Posted at

事象

タイトルの通り。

gifをご覧ください

anchor.gif

黒枠の四角には overflow: hidden がかかっている状態です。
「第2章」の見出しにはidが振られております。

動画のように、アンカーリンクをクリックすると赤丸とその下の第2章部分が上にずれますね。
もちろんこちらの理想は「赤丸の大部分が見えた状態を保ちつつ、」第2章の見出しまで飛んでほしいわけです

起こる条件

overflow: hidden をはずしたときに「スクロールバーがでる」時にこれが起こります。
「http~~~/#section2」のようにアクセスするとずれます。

何が起こっているのか

overflow: hiddenで切り取る前に、黒枠の四角内で該当位置(第2章の見出し)まで移動してから切り取っているように見えます

解決策?

「起こる条件」にも書いた通り overflow: hidden をはずしたときにスクロールバーがでないように余白などを調整してあげれば良さそうです。
それが難しいようなら overflow: hidden の要素の外にアンカーリンクのためのゴールをおいて position: absolute で位置調整をする、などの方法がありますがちょっと嫌ですね

最後に

後輩にこの事象についてヘルプを求められたとき、「jsが悪さをしているんじゃないか」と思い調査に30分ぐらい費やしてしまいました。
同じ現象に困っている人が「overflow: hidden」「アンカーリンク」でこの記事をみつけてくてたらいいなと思っています

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?