ページ内リンクの位置の調整がしたくて、とあるサイトを参考にjsファイルに以下の記述をしました。
// ページ内リンク位置調整 jQuery(function(){ var headerHight = 140; //ヘッダーの高さ //*ページ内リンク jQuery('a[href^=#]').click(function(){ var href= jQuery(this).attr("href"); var target = jQuery(href == "#" || href == "" ? 'body' : href); var position = target.offset().top-headerHight; jQuery("html, body").animate({scrollTop:position}, 550, "swing"); return false; }); //*ページ外リンク*/ var url = jQuery(location).attr('href'); if (url.indexOf("?id=") == -1) { // ほかの処理 }else{ var url_sp = url.split("?id="); var hash = '#' + url_sp[url_sp.length - 1]; var target2 = jQuery(hash); var position2 = target2.offset().top-headerHight; jQuery("html, body").animate({scrollTop:position2}, 550, "swing"); } });
これはこれでちゃんと動いたのですが、PCとスマホでヘッダーの高さが違うので、別のサイトを参考に以下のように書き換えました。
// ページ内リンク位置調整 $(function(){ var windowWidth = $(window).width(); var windowSm = 640; //切り替える幅 if(windowWidth <= windowSm) { var headerHight = 50; //スマホのヘッダーの高さ } else { var headerHight = 140; //pcのヘッダーの高さ } jQuery('a[href^=#]').click(function(){ var href= jQuery(this).attr("href"); var target = jQuery(href == "#" || href == "" ? 'body' : href); var position = target.offset().top-headerHight; jQuery("html, body").animate({scrollTop:position}, 550, "swing"); return false; }); //*ページ外リンク*/ var url = jQuery(location).attr('href'); if (url.indexOf("?id=") == -1) { // ほかの処理 }else{ var url_sp = url.split("?id="); var hash = '#' + url_sp[url_sp.length - 1]; var target2 = jQuery(hash); var position2 = target2.offset().top-headerHight; jQuery("html, body").animate({scrollTop:position2}, 550, "swing"); } });
が、動かなくなってしまいました。
Dreamweaverでは
var headerHight = 140;
の行が赤くなっています。
どこが間違っているのでしょうか??
アドバイスお願いします!
###追記
リンク元のコードはこんな感じです。
<p>詳細については<a href="/link/?id=link01">こちら</a>をご覧ください</p>
回答2件
あなたの回答
tips
プレビュー