あなたが使用しているソリューションは、アンカー リンクだけに頼るのに適しているとは思いません。ある種のページネーションとして機能することは理解していますが、あなたが言ったように、ロード時に要素にジャンプしているという事実は少し厄介です。
また、アンカーが設定されていない場合、それらのどれも開いていないという事実も本当に好きではありません。最初のものがあなたの「デフォルト」だったら、私はそれをはるかに好むでしょう。ただし、明示的に言及しない限り、CSS を頭のてっぺんに使用してこれを達成する良い方法を考えることはできません#acc2:not(:target), #acc3:not(:target)
(親セレクターを取得すれば、これは CSS4 でより簡単になるかもしれませんが、私はそうではありません)確かに)。
既存のソリューションで本当にこれを実現したい場合は、使用する$("html,body").scrollTop(0)
必要がありますが、jQuery を使用してスクロール位置を即座に設定しようとすると問題が発生したことも覚えています。タイムアウトを追加してみて (1 ミリ秒のように非常に小さい場合もあります)、それが役立つかどうかを確認してください。
// Try de/increasing the 200 and see if that helps
setTimeout(function() {
$("html, body").scrollTop(0)
}, 200);
#acc
ただし、ハッシュ開始の初期チェックや、何もない場合は要素の 1 つ (デフォルト) に焦点を当てるなど、JavaScript ももう少し採用してほしいと思います。