読み込み中...

JavaScriptにおけるリンク移動のカスタマイズ方法10選

JavaScriptを使ったリンク移動のカスタマイズ方法 JS
この記事は約14分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptでリンク移動をカスタマイズする方法が身につくでしょう。

JavaScriptを使ってリンク移動をカスタマイズする方法について、使い方や注意点、対処法、カスタマイズ方法まで、豊富なサンプルコードと応用例で学んでいきましょう。

●JavaScriptとは

JavaScriptは、ウェブページにインタラクティブな機能を追加するためのプログラミング言語です。

HTMLやCSSと組み合わせて、ウェブページのデザインや機能をより充実させることができます。

●JavaScriptでリンク移動をカスタマイズする方法

ここでは、JavaScriptを使ってリンク移動をカスタマイズする10の方法を紹介します。

それぞれの方法について、サンプルコードと解説を交えて説明していきます。

○方法1:ボタンを使ったリンク移動

JavaScriptを使ってボタンをクリックすることでリンク移動を行う方法を紹介します。

サンプルコードとその説明を下記に示します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ボタンでリンク移動</title>
<script>
// ボタンがクリックされたときの処理を定義
function buttonClick() {
  // リンク先のURLを指定
  var url = "https://www.example.com";
  
  // リンク先へ移動
  window.location.href = url;
}
</script>
</head>
<body>
<!-- ボタンを作成し、クリックイベントに関数を設定 -->
<button onclick="buttonClick()">リンク移動</button>
</body>
</html>

このサンプルコードでは、buttonClick関数がボタンのクリックイベントに設定されています。

この関数の中で、リンク先のURLをurl変数に代入し、window.location.hrefに代入することでリンク先へ移動しています。

このコードをカスタマイズすることで、リンク先を変更したり、新しいタブで開くなどの機能を追加できます。

○方法2:ドロップダウンリストでのリンク移動

ドロップダウンリストから選択した項目に応じてリンク移動を行う方法を紹介します。

サンプルコードとその説明を紹介します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ドロップダウンリストでリンク移動</title>
<script>
// ドロップダウンリストが変更されたときの処理を定義
function onSelectChange() {
  // 選択された項目の値を取得
  var selectedValue = document.getElementById("selectList").value;
  
  // 選択された項目の値に応じてリンク先へ移動
  if (selectedValue !== "none") {
    window.location.href = selectedValue;
  }
}
</script>
</head>
<body>
<!-- ドロップダウンリストを作成し、変更イベントに関数を設定 -->
<select id="selectList" onchange="onSelectChange()">
  <option value="none">選択してください</option>
  <option value="https://www.example.com">サイトA</option>
  <option value="https://www.example2.com">サイトB</option>
</select>
</body>
</html>

このサンプルコードでは、onSelectChange関数がドロップダウンリストの変更イベントに設定されています。

この関数の中で、選択された項目の値をselectedValue変数に代入し、それがnoneでない場合にwindow.location.hrefに代入することでリンク先へ移動しています。

○方法3:画像によるリンク移動

画像をクリックすることでリンク先へ移動する方法を紹介します。

サンプルコードとその説明を下記に示します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>画像でリンク移動</title>
</head>
<body>
<!-- 画像をリンクとして設定 -->
<a href="https://www.example.com">
  <img src="example-image.jpg" alt="画像リンク" />
</a>
</body>
</html>

このサンプルコードでは、<a>タグでリンクを設定し、その中に<img>タグを配置しています。

これにより、画像がリンクとして機能し、クリックすることでリンク先へ移動します。

○方法4:マウスオーバーでリンク先を表示

リンクの上にマウスを乗せた際に、リンク先のURLが表示される方法を紹介します。

サンプルコードとその説明を下記に示します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>マウスオーバーでリンク先を表示</title>
<style>
  /* ツールチップのスタイルを設定 */
  .tooltip {
    position: relative;
    display: inline-block;
  }

  .tooltip .tooltiptext {
    visibility: hidden;
    width: 200px;
    background-color: #555;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 5px;
    position: absolute;
    z-index: 1;
    bottom: 125%; /* ツールチップの位置を調整 */
    left: 50%;
    margin-left: -100px;
    opacity: 0;
    transition: opacity 0.3s;
  }

  .tooltip:hover .tooltiptext {
    visibility: visible;
    opacity: 1;
  }
</style>
</head>
<body>
<!-- リンクにマウスオーバーした際にリンク先を表示するツールチップを設定 -->
<div class="tooltip">
  <a href="https://www.example.com">サイトA</a>
  <span class="tooltiptext">https://www.example.com</span>
</div>
</body>
</html>

このサンプルコードでは、.tooltip.tooltiptextクラスを用いてリンクにマウスオーバーした際に表示されるツールチップをスタイリングしています。

.tooltip:hover .tooltiptextセレクタで、マウスオーバー時にツールチップのvisibilityopacityを変更して表示・非表示を切り替えています。

○方法5:ページ内リンクのスムーススクロール

ページ内リンクをクリックした際に、スムーズにスクロールさせる方法を紹介します。

サンプルコードとその説明を下記に示します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ページ内リンクのスムーススクロール</title>
<style>
  /* スタイルは適宜調整してください */
  body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
  }

  #navbar {
    background-color: #333;
    color: #fff;
    text-align: center;
    padding: 15px;
  }

  #navbar a {
    color: #fff;
    text-decoration: none;
    padding: 0 5px;
  }

  #navbar a:hover {
    background-color: #555;
  }

  .content {
    padding: 20px;
  }

  .section {
    margin-bottom: 20px;
  }
</style>
<script>
  // DOMが読み込まれたらイベントリスナーを設定
  document.addEventListener("DOMContentLoaded", function () {
    // ページ内リンクをクリックした際に発火するイベントを設定
    document.querySelectorAll('a[href^="#"]').forEach(function (link) {
      link.addEventListener('click', function (e) {
        // デフォルトのページ内リンクの動作をキャンセル
        e.preventDefault();

        // リンク先の要素を取得
        const target = document.querySelector(this.getAttribute('href'));

        // スムーズにスクロール
        target.scrollIntoView({
          behavior: 'smooth',
          block: 'start'
        });
      });
    });
  });
</script>
</head>
<body>
  <div id="navbar">
    <a href="#section1">セクション1</a>
    <a href="#section2">セクション2</a>
    <a href="#section3">セクション3</a>
  </div>
  <div class="content">
    <div class="section" id="section1">
      <h2>セクション1</h2>
      <p>ここはセクション1です。</p>
    </div>
    <div class="section" id="section2">
      <h2>セクション2</h2>
      <p>ここはセクション2です。</p>
    </div>
    <div class="section" id="section3">
      <h2>セクション3</h2>
      <p>ここはセクション3です。</p>
    </div>
  </div>
</body>
</html>

このサンプルコードでは、DOMContentLoadedイベントを使用して、ページ内リンクがクリックされた際にスムーススクロールが実行されるように設定しています。

scrollIntoViewメソッドを使用して、リンク先の要素にスムーズにスクロールします。

スタイルは適宜調整してください。

このコードを使用することで、ページ内リンクをクリックした際にスムーズにスクロールすることができます。

○方法6:リンク先の新しいタブでの開き方

リンクをクリックした際に、新しいタブで開く方法を紹介します。

target属性を使用してリンクを新しいタブで開くことができます。

<a href="https://example.com" target="_blank">新しいタブで開くリンク</a>

○方法7:リンクの無効化

リンクを無効化する方法を紹介します。

<a>タグにjavascript:void(0);を指定することでリンクを無効化できます。

<a href="javascript:void(0);">無効化されたリンク</a>

○方法8:外部リンクの判断

外部リンクかどうかを判断する方法を紹介します。

JavaScriptを使用してリンクのURLをチェックし、外部リンクかどうかを判断できます。

function isExternalLink(url) {
  const currentDomain = window.location.hostname;
  const linkDomain = new URL(url).hostname;
  return currentDomain !== linkDomain;
}

const link = "https://example.com";
console.log(isExternalLink(link)); // true(外部リンク)

○方法9:Ajaxを使ったリンク移動

Ajaxを使ってページ遷移を行う方法を紹介します。

Ajaxを使用することで、ページ全体をリロードせずにコンテンツの一部だけを更新できます。

document.addEventListener("DOMContentLoaded", function () {
  document.querySelectorAll("a.ajax-link").forEach(function (link) {
    link.addEventListener("click", function (e) {
      e.preventDefault();

      const url = this.getAttribute("href");
      const xhr = new XMLHttpRequest();

      xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
          document.querySelector("#content").innerHTML = xhr.responseText;
        }
      };

      xhr.open("GET", url, true);
      xhr.send();
    });
  });
});

○方法10:リンクの色をカスタマイズ

リンクの色をカスタマイズする方法を紹介します。

CSSを使用してリンクの色を変更できます。

a {
  color: #1a73e8;
}

a:hover {
  color: #e81a1a;
}

a:visited {
  color: #971ae8;
}

このCSSを使用することで、リンクのデフォルトの色、マウスオーバー時の色、訪問済みリンクの色をそれぞれ変更することができます。

●注意点と対処法

リンクを作成する際は、アクセシビリティやユーザビリティに注意することが重要です。

ここでは、リンクの注意点と対処法をいくつか挙げます。

○クリックしやすいリンクサイズ

リンクのクリック領域が小さすぎると、特にタッチデバイスでの操作が難しくなります。

リンクのサイズや間隔を適切に設定し、クリックしやすくしてください。

○説明的なリンクテキスト

「こちら」や「詳細」のような曖昧なリンクテキストでは、ユーザーがリンク先の内容を把握しにくくなります。

リンクテキストは具体的で説明的にすることが望ましいです。

○新しいタブで開くリンクの使用

新しいタブで開くリンクは、ユーザーの操作を中断させずに情報提供ができますが、使いすぎるとタブが乱立し使いづらくなる場合があります。

必要に応じて新しいタブで開くリンクを使い分けましょう。

○外部リンクの識別

外部リンクと内部リンクを明確に区別することで、ユーザーが遷移先を理解しやすくなります。

アイコンや色などで外部リンクを示す工夫を行いましょう。

○スムーススクロールの適用

ページ内リンクでスムーススクロールを適用することで、ユーザーが遷移先をスムーズに把握できます。ただし、過剰なアニメーションは避けるようにしましょう。

○アクセシビリティの確保

スクリーンリーダーやキーボード操作を使用するユーザーにも配慮したリンク設計が必要です。

適切なARIA属性を利用し、アクセシビリティを向上させましょう。

まとめ

この記事では、リンクの作成とカスタマイズに関する10の方法を紹介しました。

各方法を理解し、適切に組み合わせることで、より使いやすいウェブサイトを作成できます。

また、ユーザビリティやアクセシビリティにも配慮したリンク設計を心がけましょう。