URL にアンカー (フラグメント) を含むページが読み込まれると、スクロールのデフォルトの動作ではなく、アンカーされた要素が画面の上部に表示されるので、中央に配置します。
以下は私が望むことを行います:
var $targetDiv = $(window.location.hash);
if ($targetDiv) {
var $window = $(window);
$window.scrollTop($targetDiv.offset().top - ($window.height() / 2));
}
ただし、これを document.ready で実行すると、10 回中 9 回、要素が中央ではなく上部に読み込まれます。
jsFiddle (名前<div>
ではなく ID で使用していることに注意してください<a>
。ただし、効果は同じでした)
#middleアンカーのあるページに移動した結果。
私が推測しなければならなかった場合、ready イベントが発生した後、ブラウザはその仕事をしていて、要素の一番上までスクロールしているようです。アンカー要素を中央に配置してページをロードする正しい方法は何ですか?