初めて質問させていただきます。
1つのhtmlを作成し、ページ内リンクを設定したnavを作成しました。
このままでは長いページになってしまうので、デフォルトではコンテンツを非表示にし、navをクリックすると、そのid(#〇〇)のみがスクロールされながら表示されるページにしてます。
この場合、ページ内リンクであればclickイベントを利用してうまくいくのですが、外部ブログやQRコードのような外部から直接アクセスしたい時にうまく動きません。
hashを使えば良いという記事を見つけ色々試しているのですがうまくいかず、お力をお借りできたら幸いです。
html
//ナビゲーション <nav> <ul> <li><a href="index.html">ホーム</a></li> <li><a href="news.html">NEWS</a></li> <li><a href="#tab1">サービス</a></li> <li><a href="#tab2">FAQ</a></li> <li><a href="#tab3">ダウンロード</a></li> <li><a href="#tab4">会社概要</a></li> <li><a href="#tab5">お問い合わせ</a></li> </ul> </nav> //コンテンツ <div id="contents"> <div id="tab1"> //サービスの内容 </div> <div id="tab2"> //FAQの内容 </div> <div id="tab3"> //ダウンロードの内容 </div> <div id="tab4"> //会社概要の内容 </div> <div id="tab5"> //お問い合わせの内容 </div> </div>
jQueryに記載
//表示させたいコンテンツの記載 $(function(){ $('#contents > div').hide(); $("nav ul a").click(function(){ $("#contents > div").hide(); $($(this).attr("href")).show(); $(".current").removeClass("current"); $(this).addClass("current"); return false; }); }); //スムーズスクロールの記載 $(function(){ $("nav ul a").click(function(){ var target = $($(this).attr("href")).offset().top; target -= 70; $("html,body").animate({scrollTop: target},500); return false; }); });
ページ内リンクだけであればこれで問題なく動くのですが、外部リンクから直接#tab3のダウンロードページや#tab5のお問い合わせに飛ばしたい時はどのように記載をしたら良いでしょうか。
類似の回答を見つけたのですが、今回のケースは#contentsを一度非表示にしているのでコピペさせていただいても、
var urlHash = location.hash;
で#〇○を取得し、記載のjsにつなげてみてもうまく動きません。
別々のhtmlにしてしまえば良いのでは?
と言われてしまえばそれまでなのですが(汗)
お手数をおかけしますがよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/01 07:58
2022/03/01 08:46
2022/03/01 13:57
2022/03/01 14:04
2022/03/01 14:24
2022/03/01 14:30
2022/03/01 14:39
2022/03/01 14:45
2022/03/01 14:47
2022/03/01 14:50
2022/03/01 14:54
2022/03/01 15:01
2022/03/01 15:03
2022/03/01 15:50