跳到主要內容

Tooltip

Demo 與 Accessibility Tree

Accessibility Tree

觀察對象:觸發按鈕。

元素目前不在無障礙樹中。

Accessibility Tree

觀察對象:提示本身。 下列是操作之後會量到的值。

Role
tooltip
Status
(無狀態)
Name
至少 12 個字元,且不能與前三次使用過的密碼相同。
Description
(無 accessible description)

鍵盤操作

按鍵行為
Tab移到觸發元素上即顯示提示;移開即關閉。觸發元素必須本身可聚焦,否則鍵盤使用者永遠看不到這段說明。
Esc關閉提示,但焦點留在觸發元素上。提示蓋住了下方的內容時,使用者需要一個關掉它的方法。
(無)提示本身不接收焦點,Tab 不會進到裡面。需要操作的內容放進提示,鍵盤使用者就到不了 —— 那種情況該用 Dialog。

ARIA 屬性

屬性值用途
roletooltip提示內容的容器。
aria-describedby提示元素的 id掛在觸發元素上,不是掛在提示上。提示在無障礙樹中不獨立存在 —— 它是附加在那個按鈕上的說明,所以面板觀察的是按鈕,Description 會變成提示的內容。
(時機)只在顯示時指向提示隱藏時不輸出 aria-describedby。指向一個不存在的 id,無障礙名稱計算會拿到空字串,比沒有更糟。
(焦點)不接收提示不給 tabindex。焦點始終留在觸發元素上 —— 這既是 APG 的要求,也決定了提示裡不能放連結或按鈕。
(對照)aria-label名稱與說明不同。aria-label 蓋掉元素的名稱,Tooltip 是在名稱之後補一句。按鈕叫什麼用名稱,按下去會怎樣用說明。

WCAG 對應

  • 這一條幾乎就是為 Tooltip 寫的,它要求三件事同時成立:可關閉(Esc 能關掉且不移動焦點)、可停留(指標能從觸發元素移到提示上而不讓它消失)、持續性(在焦點或指標離開前不會自己消失)。

  • 等級 A2.1.1 鍵盤

    聚焦即顯示,不是只有滑鼠懸停才看得到。

  • 提示出現時不移動焦點,使用者的操作不會被打斷。

  • 提示以 role=tooltip 標記,並透過 aria-describedby 成為觸發元素的無障礙補充說明。

APG 規則

  • 元件語意

    工具提示的觸發元素須以工具提示元素作為無障礙補充描述

    工具提示的觸發元素須透過 aria-describedby 參照提供補充說明的工具提示元素。

  • 鍵盤操作

    工具提示可由鍵盤焦點觸發

    工具提示觸發元素取得鍵盤焦點後,提示內容通常會在短暫延遲後出現。

  • 指標與觸控操作

    工具提示可由指標懸浮觸發

    當指標懸停在觸發元素上時,工具提示會顯示,通常會有短暫延遲。

  • 鍵盤操作

    按下 Escape 鍵可關閉工具提示

    按 Escape 鍵可關閉工具提示。

  • 焦點管理

    工具提示不應接收鍵盤焦點

    工具提示顯示時,鍵盤焦點應保持在觸發元素上;若內容需要接收焦點,應改用對話框。

  • 焦點管理

    由鍵盤焦點觸發的工具提示應在焦點離開時關閉

    由觸發元素獲得焦點而開啟的工具提示,在該元素失去焦點時關閉。

  • 指標與觸控操作

    由滑鼠懸停觸發的工具提示在指標停留期間應保持顯示

    由指標懸停觸發的工具提示,在指標停留在觸發元素或工具提示本身上時須持續顯示。

  • 指標與觸控操作

    由滑鼠懸停觸發的工具提示應在指標離開後關閉

    由指標懸停觸發的工具提示,在指標離開觸發元素與工具提示後須關閉。