前提・実現したいこと
ページ内リンクをページ外からでもスムーズにスクロールさせる方法が知りたいです。
現在、サイトをWordPressで運用するために、自作テーマを使用しています。
ヘッダー部分を共通化するために、header.phpにトップページや下層ページのナビゲーションを用意していますが、
aタグが一緒になっているため、下層ページのスムーズスクロールができません。
発生している問題・エラーメッセージ
下層ページでヘッダーのリンクをクリックしてもページに移動しません。
表示は下層ページのままで、アドレスは(下層ページ/#クリックしたリンクID)になっています。
トップページでのページ内リンク移動、スムーススクロールは動作してます。
上部へ移動するボタンは全てのページで動作してます。
jQuery
js
1 jQuery(function(){ 2 var headerHeight = 50; // ヘッダーについているID、クラス名など、余白を開けたい場合は + 10を追記する。 3 var urlHash = location.hash; // ハッシュ値があればページ内スクロール 4 if(urlHash) { // 外部リンクからのクリック時 5 jQuery('body,html').stop().scrollTop(0); // スクロールを0に戻す 6 setTimeout(function(){ // ロード時の処理を待ち、時間差でスクロール実行 7 var target = jQuery(urlHash); 8 var position = target.offset().top - headerHeight; 9 jQuery('body,html').stop().animate({scrollTop:position}, 400); // スクロール速度ミリ秒 10 }, 100); 11 } 12 13 jQuery('a[href^="##]').click(function(){ // 通常のクリック時 14 var href= jQuery(this).attr("href"); // ページ内リンク先を取得 15 var headerHeight = 50; 16 var speed = 400; 17 var target = jQuery(href); 18 var position = target.offset().top - headerHeight; 19 jQuery('body,html').animate({scrollTop:position}, speed,'swing'); // スクロール速度ミリ秒 20 return false; // #付与なし、付与したい場合は、true 21 }); 22 });
header.phpのナビ部分
php
1<nav class="header0"> 2 <ul class="header_menu"> 3 <li><a href="#hoge">トップページ内リンク1</a></li> 4 <li><a href="#fuga">トップページ内リンク2</a></li> 5 </ul> 6</nav>
###デベロッパーツールでの確認
Chromeで確認したところ、特にエラーなどは表示されておりません。
この方法ではトップページか下層ページのどちらか一方のみでしか表示できないのでしょうか?
足りない情報などあれば、すぐに記載いたしますので、ご教授のほど宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/10 15:47