<a>:錨元素

基線 廣泛可用

此功能已完善,可在許多裝置和瀏覽器版本上執行。它自以下時間起在各瀏覽器中可用: 2015 年 7 月.

<a> HTML 元素(或元素),透過 href 屬性,建立到網頁、檔案、電子郵件地址、同一頁面中的位置或 URL 可以定址的任何其他內容的超連結。

每個<a>中的內容應該指示連結的目標。如果存在href屬性,則在<a>元素上聚焦時按 Enter 鍵將啟用它。

試一試

屬性

此元素的屬性包括 全域性屬性

attributionsrc 實驗性

指定您希望瀏覽器傳送 Attribution-Reporting-Eligible 頭部。在伺服器端,這用於觸發在響應中傳送 Attribution-Reporting-Register-Source 頭部,以註冊 基於導航的歸因來源

當用戶點選連結時,瀏覽器會儲存與基於導航的歸因來源關聯的源資料(如 Attribution-Reporting-Register-Source 響應頭部中提供)。有關更多詳細資訊,請參閱 歸因報告 API

您可以設定此屬性的兩個版本

  • 布林值,即僅使用 attributionsrc 名稱。這表示您希望將 Attribution-Reporting-Eligible 頭部發送到與 href 屬性指向的同一伺服器。當您在同一伺服器上處理歸因源註冊時,這很好用。
  • 包含一個或多個 URL 的值,例如
    html
    attributionsrc="https://a.example/register-source
    https://b.example/register-source"
    
    這在請求的資源不在您控制的伺服器上,或者您只想在不同的伺服器上處理歸因源註冊的情況下很有用。在這種情況下,您可以將一個或多個 URL 指定為 attributionsrc 的值。當資源請求發生時,除了資源來源外,Attribution-Reporting-Eligible 頭部將傳送到 attributionsrc 中指定的 URL。然後,這些 URL 可以使用 Attribution-Reporting-Register-Source 進行響應以完成註冊。

    注意:指定多個 URL 意味著可以在同一功能上註冊多個歸因源。例如,您可能有不同的廣告系列,您試圖衡量其成功率,這涉及到在不同的資料上生成不同的報告。

<a> 元素不能用作歸因觸發器,只能用作來源。

download

使瀏覽器將連結的 URL 視為下載。可以與 filename 值一起使用或不使用。

  • 如果沒有值,瀏覽器將建議一個檔名/副檔名,該檔名/副檔名由各種來源生成。
  • filename:定義一個值將其建議為檔名。/\ 字元將轉換為下劃線 (_)。檔案系統可能會禁止檔名中的其他字元,因此瀏覽器將根據需要調整建議的名稱。

注意

  • download 僅適用於 同源 URLblob:data: 方案。
  • 瀏覽器處理下載的方式因瀏覽器、使用者設定和其他因素而異。在下載開始之前可能會提示使用者,或者檔案可能會自動儲存,或者它可能會自動開啟,或者在外部應用程式中或在瀏覽器本身中開啟。
  • 如果 Content-Disposition 頭部包含與 download 屬性不同的資訊,則產生的行為可能會不同。
    • 如果頭部指定了 filename,則它優先於 download 屬性中指定的檔名。
    • 如果頭部指定了 inline 的處置方式,Chrome 和 Firefox 會優先考慮該屬性並將其視為下載。舊版本的 Firefox(82 之前的版本)優先考慮頭部,並將內聯顯示內容。
href

超連結指向的 URL。連結不受限於基於 HTTP 的 URL - 它們可以使用瀏覽器支援的任何 URL 方案。

  • 使用 tel: URL 的電話號碼
  • 使用 mailto: URL 的電子郵件地址
  • 使用 sms: URL 的簡訊
  • 使用 javascript: URL 的可執行程式碼
  • 雖然 Web 瀏覽器可能不支援其他 URL 方案,但網站可以使用 registerProtocolHandler()

此外,其他 URL 功能可以定位資源的特定部分,包括

  • 使用文件片段的頁面部分
  • 使用 文字片段 的特定文字部分
  • 使用媒體片段的媒體檔案片段
hreflang

暗示連結的 URL 的人類語言。沒有內建功能。允許的值與 全域性 lang 屬性 相同。

ping

URL 的空格分隔列表。當遵循連結時,瀏覽器將向 URL 傳送帶有主體 PINGPOST 請求。通常用於跟蹤。

referrerpolicy

在遵循連結時傳送多少 referrer

  • no-referrer:不會發送 Referer 頭部。
  • no-referrer-when-downgrade:不會將 Referer 頭部發送到沒有 TLSHTTPS)的 來源
  • origin:傳送的 referrer 將限制為引用頁面的來源:其 方案主機
  • origin-when-cross-origin:傳送到其他來源的 referrer 將限制為方案、主機和埠。同一來源的導航仍將包含路徑。
  • same-origin:將為 同源 傳送 referrer,但跨源請求將不包含 referrer 資訊。
  • strict-origin:僅在協議安全級別保持不變(HTTPS→HTTPS)時傳送文件的來源作為 referrer,但不要將其傳送到安全性較低的目的地(HTTPS→HTTP)。
  • strict-origin-when-cross-origin(預設):在執行同源請求時傳送完整的 URL,僅在協議安全級別保持不變(HTTPS→HTTPS)時傳送來源,並且不傳送任何頭部到安全性較低的目的地(HTTPS→HTTP)。
  • unsafe-url:referrer 將包含來源路徑(但不包含 片段密碼使用者名稱)。此值不安全,因為它會將來自 TLS 保護資源的來源和路徑洩漏到不安全的來源。
rel

連結的 URL 作為空格分隔的連結型別的關係。

target

在何處顯示連結的 URL,作為瀏覽上下文(選項卡、視窗或 <iframe>)的名稱。以下關鍵字對載入 URL 的位置具有特殊含義

  • _self:當前瀏覽上下文。(預設)
  • _blank:通常是一個新標籤頁,但使用者可以配置瀏覽器改為開啟一個新視窗。
  • _parent:當前瀏覽上下文的父瀏覽上下文。如果沒有父級,則表現為 _self
  • _top:最頂層的瀏覽上下文。具體來說,這意味著“最高”上下文是當前上下文的祖先。如果沒有祖先,則表現為 _self
  • _unfencedTop:允許嵌入的 fenced frame 導航頂級 frame(即遍歷圍欄 frame 的根目錄之外,與其他保留的目的地不同)。請注意,如果在圍欄 frame 上下文之外使用此選項,導航仍將成功,但它不會像保留關鍵字那樣起作用。

注意:<a> 元素上設定 target="_blank" 會隱式提供與設定 rel="noopener" 相同的 rel 行為,後者不會設定 window.opener

type

使用 MIME 型別 暗示連結的 URL 的格式。沒有內建功能。

已棄用的屬性

charset 已棄用

暗示連結的 URL 的 字元編碼

注意:此屬性已棄用,作者不應使用。在連結的 URL 上使用 HTTP Content-Type 頭部。

coords 已棄用

shape 屬性 一起使用。一個逗號分隔的座標列表。

name 已棄用

需要在頁面中定義可能的目標位置。在 HTML 4.01 中,idname 都可以在 <a> 上使用,只要它們的值相同。

注意:改為使用全域性屬性 id

rev 已棄用

指定反向連結;rel 屬性的反面。由於非常混亂而被棄用。

shape 已棄用

影像對映中超連結區域的形狀。

注意:改為使用 <area> 元素進行影像對映。

無障礙訪問

連結內的內容應指示連結指向的位置,即使脫離上下文也是如此。

一個令人遺憾的常見錯誤是隻連結“點選此處”或“此處”等詞語。

html
<p>Learn more about our products <a href="/products">here</a>.</p>
結果

幸運的是,這是一個簡單的修復,實際上它比不可訪問的版本更短!

html
<p>Learn more <a href="/products">about our products</a>.</p>
結果

輔助軟體有快捷方式來列出頁面上的所有連結。但是,強連結文字對所有使用者都有益 - “列出所有連結”快捷方式模擬了視力正常的使用者如何快速掃描頁面。

onclick 事件

錨元素通常被濫用為偽按鈕,方法是將其 href 設定為 #javascript:void(0) 以防止頁面重新整理,然後偵聽其 click 事件。

這些虛假的 href 值在複製/拖動連結、在新標籤頁/視窗中開啟連結、新增書籤或 JavaScript 載入、錯誤或被停用時會導致意外行為。它們還會向輔助技術(如螢幕閱讀器)傳達錯誤的語義。

改為使用 <button>。一般來說,您應該只將超連結用於導航到真實的 URL

透過 target="_blank" 在新標籤頁/視窗中開啟的連結,或指向下載檔案的連結應指示在遵循連結時會發生什麼。

視力低下、使用螢幕閱讀器或存在認知障礙的人,當新標籤頁、視窗或應用程式意外開啟時可能會感到困惑。較舊的螢幕閱讀器軟體甚至可能無法宣佈此行為。

html
<a target="_blank" href="https://www.wikipedia.org">
  Wikipedia (opens in new tab)
</a>
結果
html
<a href="2017-annual-report.ppt">2017 Annual Report (PowerPoint)</a>

如果使用圖示來表示連結行為,請確保它具有替代文字

html
<a target="_blank" href="https://www.wikipedia.org">
  Wikipedia
  <img alt="(opens in new tab)" src="newtab.svg" />
</a>

<a href="2017-annual-report.ppt">
  2017 Annual Report
  <img alt="(PowerPoint file)" src="ppt-icon.svg" />
</a>
結果

跳過連結是在<body>內容中儘可能早地放置的一個連結,它指向頁面主要內容的開頭。通常,CSS 會將跳過連結隱藏在螢幕外,直到獲得焦點。

html
<body>
  <a href="#content" class="skip-link">Skip to main content</a>

  <header></header>

  <!-- The skip link jumps to here -->
  <main id="content"></main>
</body>
css
.skip-link {
  position: absolute;
  top: -3em;
  background: #fff;
}
.skip-link:focus {
  top: 0;
}

結果

跳過連結允許鍵盤使用者繞過在多個頁面中重複的內容,例如標題導航。

對於使用輔助技術(如開關控制、語音命令或嘴棒/頭部魔杖)進行導航的人來說,跳過連結特別有用,因為遍歷重複連結的操作可能很費力。

尺寸和鄰近度

尺寸

互動式元素(如連結)應提供足夠大的區域,以便於啟用。這有助於各種人群,包括運動控制存在問題的人和使用不精確輸入(如觸控式螢幕)的人。建議的最小尺寸為 44×44 CSS 畫素

散文內容中的純文字連結不受此要求的約束,但仍然建議確保連結了足夠的文字以易於啟用。

鄰近度

互動式元素(如連結)如果放置在視覺上靠近的位置,則應在其之間留出空間。間距有助於運動控制存在問題的人,否則他們可能會意外啟用錯誤的互動式內容。

可以使用 CSS 屬性(如margin)建立間距。

示例

連結到絕對 URL

HTML

html
<a href="https://www.mozilla.com">Mozilla</a>

結果

連結到相對 URL

HTML

html
<a href="//example.com">Scheme-relative URL</a>
<a href="/en-US/docs/Web/HTML">Origin-relative URL</a>
<a href="p">Directory-relative URL</a>
<a href="./p">Directory-relative URL</a>
<a href="../p">Parent-directory-relative URL</a>

結果

連結到同一頁面上的元素

html
<!-- <a> element links to the section below -->
<p><a href="#Section_further_down">Jump to the heading below</a></p>

<!-- Heading to link to -->
<h2 id="Section_further_down">Section further down</h2>

結果

注意:可以使用 href="#top" 或空片段 (href="#") 連結到當前頁面的頂部,如 HTML 規範中所定義

連結到電子郵件地址

要建立在使用者的電子郵件程式中開啟的連結,以便讓他們傳送新郵件,請使用 mailto: 方案

html
<a href="mailto:nowhere@mozilla.org">Send email to nowhere</a>

結果

有關 mailto: URL 的詳細資訊(例如,包括主題或正文),請參閱電子郵件連結RFC 6068

連結到電話號碼

html
<a href="tel:+49.157.0156">+49 157 0156</a>
<a href="tel:+1(800)555-0123">(800) 555-0123</a>

結果

tel: 連結行為隨裝置功能而異

  • 蜂窩裝置自動撥打號碼。
  • 大多數作業系統都具有可以撥打電話的程式,例如 Skype 或 FaceTime。
  • 網站可以使用registerProtocolHandler(例如 web.skype.com)撥打電話。
  • 其他行為包括將號碼儲存到聯絡人或將號碼傳送到其他裝置。

有關語法、其他功能和 tel: URL 方案的其他詳細資訊,請參閱RFC 3966

使用 download 屬性將 <canvas> 儲存為 PNG

要將<canvas>元素的內容儲存為影像,您可以建立一個連結,其中 href 是使用 JavaScript 建立的 data: URL 中的畫布資料,而 download 屬性提供下載的 PNG 檔案的檔名

HTML
html
<p>
  Paint by holding down the mouse button and moving it.
  <a href="" download="my_painting.png">Download my painting</a>
</p>

<canvas width="300" height="300"></canvas>
CSS
css
html {
  font-family: sans-serif;
}
canvas {
  background: #fff;
  border: 1px dashed;
}
a {
  display: inline-block;
  background: #69c;
  color: #fff;
  padding: 5px 10px;
}
JavaScript
js
const canvas = document.querySelector("canvas");
const c = canvas.getContext("2d");
c.fillStyle = "hotpink";
let isDrawing;

function draw(x, y) {
  if (isDrawing) {
    c.beginPath();
    c.arc(x, y, 10, 0, Math.PI * 2);
    c.closePath();
    c.fill();
  }
}

canvas.addEventListener("mousemove", (event) =>
  draw(event.offsetX, event.offsetY),
);
canvas.addEventListener("mousedown", () => (isDrawing = true));
canvas.addEventListener("mouseup", () => (isDrawing = false));

document
  .querySelector("a")
  .addEventListener(
    "click",
    (event) => (event.target.href = canvas.toDataURL()),
  );
結果

安全和隱私

<a> 元素可能會對使用者的安全和隱私產生影響。有關資訊,請參閱Referer 標頭:隱私和安全問題

在沒有rel="noreferrer"rel="noopener"的情況下使用 target="_blank" 會使網站容易受到window.opener API 利用攻擊,但請注意,在新版瀏覽器中,設定 target="_blank" 會隱式提供與設定 rel="noopener" 相同的保護。有關詳細資訊,請參閱瀏覽器相容性

技術摘要

內容類別 流內容短語內容互動式內容、可感知內容。
允許的內容 透明的,但任何後代都不能是互動式內容<a> 元素,並且任何後代都不能具有指定的tabindex屬性。
標籤省略 無,起始標籤和結束標籤都是必須的。
允許的父元素 任何接受流內容的元素,但不包括其他 <a> 元素。
隱式 ARIA 角色 當存在 href 屬性時為link,否則為generic
允許的 ARIA 角色

當存在 href 屬性時

當不存在 href 屬性時

  • 任意
DOM 介面 HTMLAnchorElement

規範

規範
HTML 標準
# the-a-element

瀏覽器相容性

BCD 表格僅在啟用 JavaScript 的瀏覽器中載入。

另請參閱

  • <link>類似於 <a>,但用於對使用者不可見的元資料超連結。
  • :link是一個 CSS 偽類,它將匹配 href 屬性中包含 URL 且使用者尚未訪問過的 <a> 元素。
  • :visited是一個 CSS 偽類,它將匹配 href 屬性中包含 URL 且使用者過去訪問過的 <a> 元素。
  • :any-link是一個 CSS 偽類,它將匹配具有 href 屬性的 <a> 元素。
  • 文字片段是新增到 URL 中的使用者代理指令,允許內容作者連結到頁面上的特定文字,而無需使用 ID。