こんにちは、ヨロと申します。
という事で今回は、1つのページ内にリンクを貼り、クリックしてその位置までページ内ジャンプで移動する機能(アンカーリンク)について。
クリックして指定の位置まで移動(ジャンプ・アンカーリンク)何度も戻るを押すのが面倒
例えば、
「Yahoo!」の検索結果の1つの「あるサイト」に入ったとして、
そのページに「アンカーリンク」の機能が貼り付けられていたとします、
そして、そのサイト内のページ内リンクをクリックして、いろいろなコンテンツを見た後に、元々見ていた「Yahoo!」の検索結果のページに戻りたいといった場合に、
何度も何度も戻るボタンをクリックしないと、元来たページに戻れない、
そんなページってありますよね?
1つのページ内のコンテンツを移動して見てるだけなのに、何回も戻るボタンを押さないと、元来たページに戻れない。
それってすごく面倒だし、何なら元に戻れなくなって、元々何を検索していたのかも忘れてしまうパターン、
そんな時って、過去に1度や2度はあるはず、という事で今回は、
何回も戻るボタンを押さずに、元々見ていた検索結果のページに戻る方法。
これの解決方法というのが、ページ内リンクの履歴を残さない方法という事で、これらを「JavaScript」ファイルにコピペして使えばOK。
ジャンプ+スクロール
jQuery(function($) {
$('a[href^=#]').click(function() { // #で始まるアンカーをクリックした場合に処理
var speed = 400; // スクロールの速度
var href= $(this).attr("href"); // アンカーの値取得
var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を取得
var position = target.offset().top; // 移動先を数値で取得
$('body,html').animate({scrollTop:position}, speed, 'swing'); // スムーススクロール
return false;
});
});
クリックして指定の位置まで移動|ページ内リンク+その位置までジャンプする方法
ちなみに「ページ内リンク」の設定し、同じページ内の指定した位置まで飛ばす方法は、
飛ばしたい位置の要素に「id」をつけるだけ。例えばこんな感じ。
ページ内リンクでその位置まで飛ばす方法
<a href="#top"></a>
<a href="#service"></a>
<a href="#access"></a> <!-- 例えばここをクリックしたら、下のid="access"まで飛ぶ -->
↓
↓
↓
↓
↓
↓
↓
↓
<div id="top"></div>
<div id="about"></div>
<div id="access"></div>
例えばこんな感じで、元々あるクラスに「id」を付与するのもOK
【ページ内リンクでその位置まで飛ばす方法】
<a href="#〇〇"></a>
<div class="service" id="〇〇"></div>
これが出来れば今後、ヘッダー固定のランディングページ(LP)を作る時なんかにもとても便利なのでは?
1つのページ内を移動してるだけなのに、面倒だなぁ