超連結連接網頁、檔案及文件內的位置。在 HTML 中,具有 href 屬性的 <a> 元素會建立超連結。
<a href="courses.html">查看我們的課程</a>在這個例子中:
<a>是錨點元素。href指定目的地。查看我們的課程是連結文字。
使用連結前往目的地,使用按鈕執行操作。
6.1 基本連結結構
<p>
報名前,請閱讀我們的<a href="course-guide.html">課程指南</a>。
</p><a> 和 </a> 之間的文字通常可以點擊,也可以透過鍵盤操作。
沒有 href 的 <a> 不是一般超連結:
<a>課程指南</a>它不會自動具備一般連結的導覽及鍵盤行為。
不要以沒有目的地的錨點元素代替按鈕。
6.2 絕對與相對 URL
絕對 URL
絕對 URL 包含通訊協定及目的地主機:
<a href="https://www.gov.hk/">瀏覽香港政府一站通</a>連結至其他網站,或需要完整目的地 URL 時,可以使用這種形式。
在可用的情況下,優先使用 HTTPS。
相對 URL
相對 URL 會根據文件的基底 URL 解析;一般而言,這就是文件本身的 URL。
<a href="courses.html">課程</a>
<a href="guides/html.html">HTML 指南</a>
<a href="../index.html">上一層資料夾的首頁</a>例如:
website/
├── index.html
├── courses.html
└── guides/
└── html.html
從 index.html 出發:
<a href="guides/html.html">HTML 指南</a>從 guides/html.html 出發:
<a href="../courses.html">課程</a>../ 表示移至上一層資料夾。
根目錄相對 URL
以 / 開始的路徑,會從目前來源的根目錄開始:
<a href="/courses.html">課程</a>如果網站部署在子目錄內,這種路徑可能會指向該子目錄之外。
對初學者的專案而言,文件相對路徑通常較容易在不同資料夾及託管環境之間移動。
6.3 連結至同一頁面的位置
為目的地元素設定唯一的 id:
<a href="#entry-requirements">跳至入讀要求</a>
<h2 id="entry-requirements">入讀要求</h2>
<p>不需要具備程式編寫經驗。</p>以 # 開始的部分稱為片段識別碼(fragment identifier)。
你也可以連結至另一個網頁內的位置:
<a href="courses.html#entry-requirements">
查看課程入讀要求
</a>請注意:
- 目的地的
id必須與片段識別碼相符。 - 每個
id必須在所屬文件內保持唯一。 - 片段連結通常會捲動至目的地。
- 鍵盤焦點行為可能有所不同;捲動畫面不一定等於移動焦點。
應在目的地元素上使用 id,而不是沿用舊式的 <a name="…"> 寫法。
6.4 撰寫有意義的連結文字
連結文字應協助讀者了解目的地。
較不清晰:
<p>查看時間表,請<a href="timetable.html">按此</a>。</p>較好的做法:
<p><a href="timetable.html">查看課程時間表</a>。</p>螢幕閱讀器使用者可能會透過連結清單導覽,因此具描述性的文字特別有用。
避免只依賴:
- 「按此」。
- 「更多」。
- 沒有說明的圖示。
title屬性提供的工具提示。
如果連結指向檔案,可以標明檔案類型,並在已知的情況下提供大小:
<a href="documents/course-guide.pdf">
下載課程指南(PDF)
</a>這段文字描述預期的資源,但文字本身不會強制瀏覽器下載檔案。
6.5 在新分頁或視窗開啟
連結預設通常會在目前的瀏覽環境中開啟。
若要要求在新分頁或視窗開啟:
<a
href="https://www.gov.hk/"
target="_blank"
rel="noopener"
>
瀏覽香港政府一站通(在新分頁或視窗開啟)
</a>實際開啟為分頁還是視窗,由瀏覽器及使用者設定決定。
安全與私隱
noopener防止新開啟的頁面取得指向原頁面的 opener 參照。noreferrer不傳送來源頁面資訊,同時也包含noopener的效果。
現代瀏覽器一般會為具有 target="_blank" 的錨點連結套用 noopener 行為,但明確寫出屬性能讓意圖更清晰。
如果合法用途需要來源頁面資訊,不要自動加入 noreferrer。
避免將所有連結都設為在新分頁開啟。 除非有清楚理由,否則讓使用者自行選擇;要求開啟新的瀏覽環境時,也應事先提示。
6.6 電郵與電話連結
電郵連結
<a href="mailto:[email protected]">
傳送電郵至查詢團隊
</a>這會要求瀏覽器或作業系統開啟電郵處理程式,不會自動傳送電郵。
你也可以加入主旨:
<a href="mailto:[email protected]?subject=Course%20enquiry">
以電郵查詢課程
</a>參數值需要適當的 URL 編碼。如果在 HTML 中寫入多個查詢參數,應使用 & 分隔它們。
電話連結
<a href="tel:+85212345678">致電 +852 1234 5678</a>如果裝置有可用的電話處理程式,這會要求開啟它。
在適合的情況下,目的地應使用國際格式電話號碼。上述號碼只是格式示例。
公開寫在 HTML 中的電郵地址,訪客可以看見,也可能被自動化工具收集。
6.7 連結至檔案與要求下載
一般連結可以指向檔案:
<a href="documents/checklist.pdf">開啟 HTML 檢查清單(PDF)</a>瀏覽器可能會顯示或下載檔案,取決於檔案類型、回應標頭及使用者設定。
download 屬性會要求下載行為:
<a href="documents/checklist.pdf" download>
下載 HTML 檢查清單(PDF)
</a>你也可以提供建議檔案名稱:
<a
href="documents/checklist.pdf"
download="html-checklist.pdf"
>
下載 HTML 檢查清單(PDF)
</a>重要限制:
download一般適用於同源 URL,以及blob:或data:URL。- 瀏覽器政策及伺服器回應標頭可能影響結果。
- 建議檔案名稱不保證會被採用。
- 這個屬性不會建立檔案;目的地檔案必須存在。
6.8 使用圖片作為連結
圖片可以成為連結的內容:
<a href="index.html">
<img src="images/logo.png" alt="海港學習中心首頁">
</a>當圖片是連結的唯一內容時,alt 文字應說明連結的用途。
如果連結已包含具描述性的文字,而圖片只是裝飾,應使用空白替代文字:
<a href="index.html">
<img src="images/logo.png" alt="">
海港學習中心首頁
</a>不要在錨點元素內放入另一個連結或按鈕,也應避免放入表單控制項等其他互動元素。
6.9 連結與按鈕的分別
| 預期行為 | 使用元素 |
|---|---|
| 前往另一個網頁 | <a href="…"> |
| 跳至某個章節 | <a href="#…"> |
| 開啟連結文件 | <a href="…"> |
| 提交表單 | <button type="submit"> |
| 顯示或隱藏面板 | <button type="button"> |
| 執行應用程式操作 | 通常使用 <button> |
避免以下模擬操作的連結:
<!-- 一般操作應避免這些寫法。 -->
<a href="#" onclick="showDetails()">顯示詳情</a>
<a href="javascript:showDetails()">顯示詳情</a>href="#" 是真正的片段參照,可能會令網頁跳至頂部。
javascript: URL 將導覽與可執行程式碼混合,可能造成安全及內容安全政策方面的問題。
這類操作應改用按鈕,並透過 JavaScript 事件監聽器處理。
6.10 語言與連結資訊
連結會繼承周圍的語言設定。
香港英文網頁可以使用:
<html lang="en-HK">中文連結文字可以設定自己的語言:
<a href="zh/course-guide.html" lang="zh-Hant-HK">
繁體中文課程指南
</a>你也可以提供目的地語言的提示:
<a
href="zh/course-guide.html"
lang="zh-Hant-HK"
hreflang="zh-Hant-HK"
>
繁體中文課程指南
</a>| 屬性 | 描述對象 |
|---|---|
lang | 連結本身內容的語言 |
hreflang | 連結資源的語言 |
hreflang 不會翻譯目的地,也不保證提示一定正確。
一般英文可以使用 lang="en"。如果網頁主要使用香港繁體中文,應在 <html> 設定 lang="zh-Hant-HK"。
6.11 設定無障礙連結樣式
連結應能與周圍文字區分,不要只依靠顏色。
a {
color: #005ea8;
text-decoration: underline;
text-underline-offset: 0.2em;
}
a:hover {
text-decoration-thickness: 0.15em;
}
a:focus-visible {
outline: 3px solid #005ea8;
outline-offset: 4px;
}保留清晰可見的鍵盤焦點提示。不要移除外框,除非提供有效的替代樣式。
也應確保連結文字與背景之間有足夠對比。
6.12 完整範例:包含頁內連結的課程指南
以下中文版網頁使用頁內連結,因此不需要其他檔案或 JavaScript,導覽便可以運作。
主要語言設定為香港繁體中文,英文摘要則有自己的語言設定。
id: hong-kong-html-anchors-hyperlinks
name: 錨點與超連結 — 課程指南
type: html
content: |-
<!doctype html>
<html lang="zh-Hant-HK">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>課程指南 | 錨點與超連結</title>
<style>
* {
box-sizing: border-box;
}
body {
margin: 0;
color: #222;
background: #f5f7fa;
font-family: system-ui, sans-serif;
line-height: 1.8;
}
main {
max-width: 46rem;
margin-inline: auto;
padding: 2rem 1rem;
}
h1,
h2 {
color: #005ea8;
line-height: 1.4;
}
h1 {
margin-block: 0 1rem;
}
h2 {
margin-block: 0 1rem;
}
p {
margin-block: 0 1rem;
}
nav,
section {
margin-block: 1.5rem;
padding: 1.25rem;
border: 1px solid #767676;
border-radius: 0.5rem;
background: white;
}
section > :last-child {
margin-block-end: 0;
}
a {
color: #005ea8;
text-decoration: underline;
text-underline-offset: 0.2em;
}
a:hover {
text-decoration-thickness: 0.15em;
}
a:focus-visible {
outline: 3px solid #005ea8;
outline-offset: 4px;
}
[id] {
scroll-margin-block-start: 1rem;
}
.welcome {
padding: 1rem;
border-inline-start: 4px solid #005ea8;
background: #eaf2f8;
}
</style>
</head>
<body>
<main>
<h1 id="top">HTML 課程指南</h1>
<p>使用以下連結,探索本頁內容。</p>
<p class="welcome">
你可以使用以下連結,跳到本頁的不同部分。
</p>
<nav aria-label="本頁目錄">
<ul>
<li><a href="#overview">課程概覽</a></li>
<li><a href="#requirements">入讀要求</a></li>
<li>
<a href="#english-summary" lang="en-HK">
English summary
</a>
</li>
</ul>
</nav>
<section>
<h2 id="overview">課程概覽</h2>
<p>
學習使用標題、段落、清單及超連結,
建立網頁結構。
</p>
<p>
繼續查看<a href="#requirements">入讀要求</a>。
</p>
</section>
<section>
<h2 id="requirements">入讀要求</h2>
<p>不需要具備網頁開發經驗。</p>
<ul>
<li>純文字或程式碼編輯器</li>
<li>現代網頁瀏覽器</li>
<li>基本檔案及資料夾管理能力</li>
</ul>
<p><a href="#top">返回網頁主標題</a></p>
</section>
<section lang="en-HK">
<h2 id="english-summary">English Summary</h2>
<p>
This course introduces basic HTML structure,
including headings, paragraphs, lists, and hyperlinks.
</p>
<p>
Hyperlinks lead to other pages, documents,
or specific locations within the same page.
</p>
<p><a href="#top">Return to the page heading</a></p>
</section>
</main>
</body>
</html>在這個範例中:
- 每個連結目的地都是已存在且唯一的
id。 - 連結文字描述目的地。
- 英文章節有局部語言設定。
- 連結保留底線,並提供清晰的焦點提示。
- 原生片段導覽不需要 JavaScript。
6.13 常見錯誤
| 錯誤 | 較好的做法 |
|---|---|
遺漏 href | 為真正的超連結提供目的地 |
| 所有連結都使用「按此」 | 撰寫具描述性的連結文字 |
| 使用連結執行顯示或隱藏操作 | 使用按鈕 |
使用 href="#" 作為操作佔位符 | 選擇真正的目的地或使用按鈕 |
| 寫錯相對路徑 | 從目前文件的位置檢查路徑 |
連結至不存在或重複的 id | 使用已存在且唯一的目的地 |
| 所有連結都在新分頁開啟 | 預設使用目前的瀏覽環境 |
假設 download 一定會強制下載 | 考慮來源、伺服器及瀏覽器行為 |
圖片連結沒有實用的 alt 文字 | 描述連結用途 |
| 移除所有焦點提示 | 提供可見的鍵盤焦點樣式 |
| 在連結內放入按鈕或其他連結 | 將互動元素分開 |
本章總結: 使用 <a href="…"> 建立超連結,選擇正確的 URL 形式,並撰寫有意義的連結文字。連結用來導覽,按鈕用來執行操作;同時應保留清晰的視覺辨識及鍵盤無障礙功能。















