HTML講座 / リンクの作成、相対パスとページ内移動

HTMLのリンクはa要素で作り、移動先をhref属性に書きます。別ページだけでなく、同じ文書の特定の場所、ファイル、メールアドレスなども指定できます。リンクの文章だけで行き先が分かるように書きます。

aとhrefでリンクを作る

次の例ではURLが行き先、タグの中の「HTML lists tutorial」が画面に表示されるリンク文です。このサンプルは既存の英語版リスト講座へ接続します。日本語で学ぶ場合はol・ul・dlの使い分けも参照できます。

<a href="https://www.codingfactory.net/en/15489">HTML lists tutorial</a>

hrefがないaは通常の移動用リンクではありません。仮の行き先として#を入れるとページ上部へ移動するなど、意図しない挙動になる場合があります。

絶対URLと相対URL

https://から始まる絶対URLはドメインを含みます。相対URLは、リンクを書く文書の場所を基準に解決されます。次は練習用のフォルダー構成で、Coding Factory上にこれらのファイルがあるという意味ではありません。

site/
  contact.html
  lessons/
    index.html
    about.html
<a href="https://www.codingfactory.net/en/15489">Full URL</a>
<a href="about.html">About page in this folder</a>
<a href="../contact.html">Contact page one folder up</a>
<a href="/en/15489">HTML lists on this site</a>

about.htmlは同じフォルダー、../contact.htmlは一つ上のフォルダーのファイルです。/から始まるパスはサイトのルート基準になります。ローカルのfile://と公開サーバーではルートの扱いが違うため、配置後にも確認します。

ページ内の場所へ移動する

移動先に文書内で一意のidを付け、リンクに#とその値を書きます。次の例ではcontactの綴りを一致させています。

<a href="#contact">Go to contact details</a>
<h2 id="contact">Contact</h2>
<p>Contact information goes here.</p>

別のファイルならabout.html#contactのようにURLへ追加します。同じIDが複数あると移動先の判断が曖昧になるため、使い回さないようにします。スクロールできたかだけでなく、目的の節へ移動したかを確認してください。

メールと新しいタブのリンク

mailto:は利用者のメールアプリへ作成を依頼します。クリックしただけでメールを送信するものではなく、利用可能なアプリの設定によっては期待通りに開かない場合もあります。

<a href="mailto:hello@example.com">Send an email</a>

外部サイトを新しいタブなどで開く場合はtarget="_blank"とrel="noopener noreferrer"を指定します。実際にタブかウィンドウかはブラウザーの設定にもよります。

<a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a"
   target="_blank" rel="noopener noreferrer">MDN's a element reference</a>

開き方が操作に影響する場合は、リンクの近くで新しいタブが開くことを伝えます。

download属性の条件

downloadはリンク先のファイルのダウンロードをブラウザーに要求します。次は同じサイトの画像を対象にした例です。

<a href="/wp-content/uploads/html-image-sample-lake-tree-1600-v1.webp" download>Download the example image</a>

通常は同一オリジンのURL、blob:、data:が対象です。他のサイトの一般的なURLに付ければ必ず保存させられるわけではありません。同一オリジンでもサーバーの応答やブラウザー設定に影響されるため、実際の配置先で確認します。詳しくはMDNのa要素を参照してください。

三つのファイルで相対パスを実習する

最初の構成どおりにフォルダーを作り、以下を順にsite/lessons/index.html、site/lessons/about.html、site/contact.htmlへ保存します。各コードは完全な文書なので、他の文書に入れ子にせずファイル全体として保存してください。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Path practice home</title>
</head>
<body>
  <h1>Path practice home</h1>
  <nav aria-label="Practice menu">
    <a href="about.html">About</a>
    <a href="../contact.html">Contact</a>
  </nav>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>About</title>
</head>
<body>
  <h1>About</h1>
  <nav aria-label="Practice menu">
    <a href="index.html">Practice home</a>
    <a href="../contact.html">Contact</a>
  </nav>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Contact</title>
</head>
<body>
  <h1>Contact</h1>
  <nav aria-label="Practice menu">
    <a href="lessons/index.html">Practice home</a>
    <a href="lessons/about.html">About</a>
  </nav>
</body>
</html>

各ファイルを開き、すべてのリンクをたどってアドレスのフォルダーを比較します。../は一階層上へ戻ります。失敗したらリンク元のファイルの場所から解決し直してください。試しに変えたパスは元に戻し、もう一度移動を確認します。

公開前のリンク確認

「こちら」だけでなく、行き先の内容が分かる文言にします。ファイル名の大文字・小文字や拡張子、相対位置、ページ内IDの一致を確認します。メールやダウンロードは環境依存の条件もあるため、通常のページ移動とは分けて試します。三つのページをサイトとして仕上げる手順は小さな複数ページサイトで扱います。

같은 카테고리의 다른 글
HTML講座 / srcset・sizes・pictureでレスポンシブ画像を作る

HTML講座 / srcset・sizes・pictureでレスポンシブ画像を作る

同じ構図の解像度選択と、画面幅に応じた構図変更を区別して学びます。w記述子、ピクセル密度、currentSrcによる確認方法と、キャッシュが比較に与える影響も解説します。

HTML講座 / 複数ページで小さなWebサイトを作る

HTML講座 / 複数ページで小さなWebサイトを作る

ホーム・紹介・問い合わせ練習の三ページを作り、共通メニューと現在位置を設定します。フォームは送信値の確認用とし、相対リンク、入力制約、キーボード、文法を点検します。

HTML講座 / audio・video・iframeでメディアを埋め込む

HTML講座 / audio・video・iframeでメディアを埋め込む

音声、動画、外部文書の埋め込みを学びます。字幕ファイル、代替リンク、画面幅への対応と、ファイル形式や提供元の制限による読み込み失敗の確認方法も説明します。

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

関連する入力をfieldsetでまとめ、legendで質問を示す方法を学びます。ラジオグループを独立させるnameと、自動入力の目的を示すautocompleteの違いも解説します。

HTML講座 / figureとfigcaptionで図と説明をまとめる

HTML講座 / figureとfigcaptionで図と説明をまとめる

図とキャプションを一つのまとまりとして表す方法を学びます。altとキャプションの役割、出典の示し方、figureを使わなくてもよい場面も説明します。

HTML講座 / placeholderと入力中も残る案内文を付ける

HTML講座 / placeholderと入力中も残る案内文を付ける

label、placeholder、valueの違いを学びます。inputとtextareaの例、aria-describedbyによる説明の関連付け、フォームデータで送られる値の確認方法も紹介します。

HTML講座 / textarea・select・option・buttonを使う

HTML講座 / textarea・select・option・buttonを使う

複数行入力、選択メニュー、送信・リセット・通常ボタンを使い分けます。表示ラベルと送信値、初期値と現在値を実際のフォームで比較する方法も紹介します。

HTML講座 / HTMLとは何か、Webページでの役割を理解する

HTML講座 / HTMLとは何か、Webページでの役割を理解する

HTMLで文書の意味と構造を表す方法を、CSS・JavaScriptとの違いとともに学びます。実際にHTMLファイルを保存して、ブラウザーで確認する手順も紹介します。

HTML講座 / 見出しと段落を正しく使う

HTML講座 / 見出しと段落を正しく使う

h1〜h6で見出しの階層を表し、pで段落、brで段落内の改行を作る方法を学びます。文字サイズと文書構造を区別し、見出しの飛び級を修正する練習も行います。

HTML講座 / required・文字数・範囲で入力値を検証する

HTML講座 / required・文字数・範囲で入力値を検証する

必須入力、文字数、数値の範囲と刻み、メール形式の制約を学びます。境界値を試し、ブラウザーの案内とサーバー側の検証を分けて考える方法も説明します。