Hướng dẫn toàn diện về cách triển khai tooltip có thể truy cập bằng trạng thái di chuột và tập trung, đảm bảo khả năng sử dụng cho mọi người dùng, kể cả người khuyết tật.
Triển khai Tooltip: Thông tin có thể truy cập khi Di chuột và Tập trung
Tooltip là các thông báo trợ giúp nhỏ theo ngữ cảnh xuất hiện khi người dùng di chuột qua hoặc tập trung vào một yếu tố. Chúng có thể cung cấp thông tin bổ sung, làm rõ mục đích của một yếu tố, hoặc đưa ra gợi ý về cách sử dụng một tính năng. Tuy nhiên, tooltip có thể dễ dàng trở thành cơn ác mộng về khả năng truy cập nếu không được triển khai đúng cách. Hướng dẫn này phác thảo các phương pháp thực hành tốt nhất để tạo ra các tooltip mà mọi người đều có thể sử dụng, bao gồm cả người dùng khuyết tật.
Tại sao khả năng truy cập lại quan trọng đối với Tooltip
Khả năng truy cập không chỉ là về việc tuân thủ; đó là về việc tạo ra trải nghiệm người dùng tốt hơn cho mọi người. Khi tooltip không thể truy cập được, nó có thể loại trừ những người dùng dựa vào các công nghệ hỗ trợ như trình đọc màn hình, điều hướng bằng bàn phím hoặc nhập liệu bằng giọng nói. Hãy xem xét các tình huống sau:
- Người dùng trình đọc màn hình: Nếu một tooltip không được đánh dấu đúng cách, trình đọc màn hình có thể không thông báo sự hiện diện hoặc nội dung của nó.
- Người dùng bàn phím: Nếu một tooltip chỉ xuất hiện khi di chuột qua, người dùng bàn phím sẽ không thể truy cập nó.
- Người dùng bị suy giảm vận động: Các chuyển động chuột chính xác cần thiết cho các tương tác di chuột có thể khó khăn hoặc không thể thực hiện được.
- Người dùng bị khuyết tật về nhận thức: Một tooltip có thời gian hiển thị không hợp lý hoặc khó hiểu có thể gây ra sự thất vọng và cản trở sự hiểu biết.
Bằng cách tuân theo các phương pháp thực hành tốt nhất về khả năng truy cập, chúng ta có thể đảm bảo rằng tooltip nâng cao thay vì cản trở trải nghiệm người dùng cho tất cả mọi người.
Các nguyên tắc chính cho Tooltip có thể truy cập
Các nguyên tắc sau đây rất quan trọng để tạo ra các tooltip có thể truy cập:
- Cung cấp quyền truy cập thay thế: Đảm bảo tooltip có thể truy cập được thông qua cả di chuột và tập trung bằng bàn phím.
- Sử dụng thuộc tính ARIA: Sử dụng các thuộc tính ARIA (Accessible Rich Internet Applications) để xác định và mô tả đúng các tooltip cho công nghệ hỗ trợ.
- Quản lý tập trung: Kiểm soát nơi con trỏ tập trung đi đến khi một tooltip được hiển thị và ẩn đi.
- Đảm bảo độ tương phản đủ: Cung cấp đủ độ tương phản màu sắc giữa văn bản tooltip và nền.
- Cho phép đủ thời gian: Cho người dùng đủ thời gian để đọc nội dung tooltip.
- Làm cho chúng có thể bị loại bỏ: Cung cấp một cách rõ ràng để loại bỏ tooltip.
- Tránh lạm dụng: Sử dụng tooltip một cách tiết kiệm và chỉ khi cần thiết.
Kỹ thuật triển khai
1. Sử dụng Di chuột và Tập trung
Khía cạnh quan trọng nhất của tooltip có thể truy cập là đảm bảo chúng có thể được truy cập bởi cả người dùng chuột và bàn phím. Điều này có nghĩa là tooltip nên xuất hiện cả khi di chuột qua và khi yếu tố nhận được sự tập trung.
HTML:
<a href="#" aria-describedby="tooltip-example">Liên kết ví dụ</a>
<div id="tooltip-example" role="tooltip" style="display: none;">Đây là một tooltip ví dụ.</div>
CSS:
a:hover + div[role="tooltip"],
a:focus + div[role="tooltip"] {
display: block;
position: absolute;
background-color: #f0f0f0;
border: 1px solid #ccc;
padding: 5px;
z-index: 1000; /* Đảm bảo tooltip ở trên cùng */
}
Giải thích:
aria-describedby
: Thuộc tính này liên kết liên kết với yếu tố tooltip bằng ID của nó. Điều này cho các công nghệ hỗ trợ biết rằng tooltip cung cấp thông tin bổ sung về liên kết.role="tooltip"
: Vai trò ARIA này xác định yếu tố là một tooltip.- CSS sử dụng bộ chọn anh em liền kề (
+
) để hiển thị tooltip khi liên kết được di chuột qua hoặc được tập trung.
JavaScript (Kiểm soát nâng cao - Tùy chọn):
Mặc dù CSS có thể xử lý việc hiển thị/ẩn đơn giản, JavaScript cho phép kiểm soát mạnh mẽ hơn, đặc biệt khi tooltip được tạo động hoặc cần hành vi phức tạp hơn.
const link = document.querySelector('a[aria-describedby="tooltip-example"]');
const tooltip = document.getElementById('tooltip-example');
link.addEventListener('focus', () => {
tooltip.style.display = 'block';
});
link.addEventListener('blur', () => {
tooltip.style.display = 'none';
});
link.addEventListener('mouseover', () => {
tooltip.style.display = 'block';
});
link.addEventListener('mouseout', () => {
tooltip.style.display = 'none';
});
2. Sử dụng thuộc tính ARIA
Các thuộc tính ARIA rất cần thiết để cung cấp thông tin ngữ nghĩa cho các công nghệ hỗ trợ. Dưới đây là phân tích các thuộc tính chính:
aria-describedby
: Như đã đề cập trước đó, thuộc tính này thiết lập mối quan hệ giữa yếu tố kích hoạt và yếu tố tooltip.role="tooltip"
: Thuộc tính này xác định rõ ràng yếu tố là một tooltip.aria-hidden="true"
/aria-hidden="false"
: Sử dụng các thuộc tính này để cho biết liệu tooltip có đang hiển thị với các công nghệ hỗ trợ hay không. Khi tooltip bị ẩn, đặtaria-hidden="true"
. Khi nó hiển thị, đặtaria-hidden="false"
. Điều này đặc biệt quan trọng khi sử dụng JavaScript để kiểm soát khả năng hiển thị của tooltip.
Ví dụ:
<button aria-describedby="help-tooltip">Gửi</button>
<div id="help-tooltip" role="tooltip" aria-hidden="true">Nhấp vào đây để gửi biểu mẫu.</div>
JavaScript (cho aria-hidden):
const button = document.querySelector('button[aria-describedby="help-tooltip"]');
const tooltip = document.getElementById('help-tooltip');
button.addEventListener('focus', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('blur', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
button.addEventListener('mouseover', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('mouseout', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
3. Quản lý Tập trung
Khi một tooltip xuất hiện, nó thường *không nên* chiếm lấy sự tập trung từ yếu tố kích hoạt. Sự tập trung nên được giữ lại trên yếu tố đã kích hoạt tooltip. Điều này đảm bảo rằng người dùng bàn phím có thể tiếp tục điều hướng trang mà không bị gián đoạn bất ngờ.
Tuy nhiên, có thể có những tình huống bạn *muốn* di chuyển sự tập trung đến tooltip, đặc biệt nếu tooltip chứa các yếu tố tương tác (ví dụ: liên kết, nút). Trong trường hợp này, hãy đảm bảo rằng:
- Tooltip được phân biệt trực quan để chỉ ra rằng nó đang được tập trung.
- Có một cách rõ ràng để trả lại sự tập trung cho yếu tố kích hoạt ban đầu (ví dụ: một nút đóng trong tooltip).
Trong hầu hết các trường hợp, việc tránh quản lý sự tập trung trong chính tooltip được ưa thích hơn vì sự đơn giản và khả năng sử dụng.
4. Đảm bảo độ tương phản đủ
Độ tương phản màu sắc rất quan trọng cho khả năng đọc. Đảm bảo rằng màu văn bản trong tooltip của bạn có độ tương phản đủ so với màu nền. Hướng dẫn về khả năng truy cập nội dung web (WCAG) khuyến nghị tỷ lệ tương phản ít nhất là 4.5:1 đối với văn bản thông thường và 3:1 đối với văn bản lớn (18pt hoặc 14pt chữ đậm).
Sử dụng các công cụ kiểm tra độ tương phản trực tuyến để xác minh rằng lựa chọn màu sắc của bạn đáp ứng các tiêu chuẩn về khả năng truy cập. Ví dụ về các công cụ kiểm tra độ tương phản bao gồm:
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
- Coolors: https://coolors.co/contrast-checker
Ví dụ (Độ tương phản tốt):
.tooltip {
background-color: #000;
color: #fff;
}
Ví dụ (Độ tương phản kém):
.tooltip {
background-color: #fff;
color: #eee;
}
5. Cho phép đủ thời gian
Người dùng cần đủ thời gian để đọc nội dung tooltip. Tránh các tooltip biến mất quá nhanh. Mặc dù không có con số kỳ diệu nào, hãy nhắm đến thời gian hiển thị tối thiểu là vài giây. Ngoài ra, tooltip nên vẫn hiển thị miễn là người dùng đang di chuột qua hoặc đã tập trung vào yếu tố kích hoạt. Nếu bạn cần loại bỏ tooltip do các sự kiện khác, hãy cung cấp một chỉ báo rằng tooltip sẽ đóng lại.
Nếu nội dung tooltip dài, hãy cân nhắc cung cấp một cách để người dùng tự loại bỏ tooltip (ví dụ: một nút đóng hoặc nhấn phím Escape).
6. Làm cho chúng có thể bị loại bỏ
Mặc dù tooltip thường tự động biến mất khi người dùng di chuyển chuột ra xa hoặc bỏ tập trung, nhưng việc cung cấp một cách rõ ràng để loại bỏ chúng theo cách thủ công là một thói quen tốt, đặc biệt đối với các tooltip dài hoặc chứa các yếu tố tương tác.
Các phương pháp để loại bỏ Tooltip:
- Nút đóng: Bao gồm một nút đóng nổi bật trực quan trong tooltip.
- Phím Escape: Cho phép người dùng loại bỏ tooltip bằng cách nhấn phím Escape.
- Nhấp ra ngoài: Loại bỏ tooltip khi người dùng nhấp vào bất kỳ đâu bên ngoài tooltip và yếu tố kích hoạt. (Sử dụng cẩn thận vì nó có thể gây gián đoạn).
Ví dụ (Nút đóng):
<div id="my-tooltip" role="tooltip" aria-hidden="true">
Đây là nội dung tooltip của tôi.
<button onclick="hideTooltip()">Đóng</button>
</div>
Ví dụ (Phím Escape):
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
hideTooltip(); // Thay thế bằng hàm ẩn tooltip thực tế của bạn
}
});
7. Tránh lạm dụng
Tooltip nên được sử dụng một cách tiết kiệm và chỉ khi chúng cung cấp thông tin thực sự hữu ích. Việc lạm dụng tooltip có thể làm lộn xộn giao diện, làm người dùng mất tập trung và tạo ra trải nghiệm khó chịu.
Các lựa chọn thay thế cho Tooltip:
- Nhãn rõ ràng: Sử dụng các nhãn rõ ràng và mô tả cho các trường biểu mẫu, nút và liên kết.
- Trợ giúp theo ngữ cảnh: Cung cấp văn bản trợ giúp trực tiếp trong giao diện, gần các yếu tố liên quan.
- Tài liệu trợ giúp: Liên kết đến tài liệu trợ giúp toàn diện cho các tính năng phức tạp hơn.
Các vấn đề nâng cao
Nội dung động
Nếu nội dung tooltip của bạn được tạo động (ví dụ: tải từ API hoặc cập nhật dựa trên đầu vào của người dùng), hãy đảm bảo rằng thuộc tính aria-describedby
và khả năng hiển thị của tooltip được cập nhật tương ứng. Sử dụng JavaScript để quản lý các cập nhật này.
Định vị
Hãy xem xét cẩn thận vị trí của các tooltip của bạn. Tránh đặt chúng ở vị trí che khuất nội dung quan trọng hoặc gây ra sự thay đổi bố cục. Hãy lưu ý đến các kích thước và độ phân giải màn hình khác nhau, và sử dụng CSS để đảm bảo rằng các tooltip luôn hiển thị trong khung nhìn.
Thiết bị di động
Tooltip theo truyền thống dựa vào các tương tác di chuột, vốn không có sẵn trên các thiết bị cảm ứng. Đối với các thiết bị di động, hãy cân nhắc sử dụng các phương thức tương tác thay thế, chẳng hạn như:
- Chạm: Hiển thị tooltip khi người dùng chạm vào yếu tố.
- Nhấn giữ: Hiển thị tooltip khi người dùng nhấn giữ yếu tố.
- Hiển thị khi tập trung: Hiển thị khi yếu tố nhận được sự tập trung. Điều này có thể đạt được bằng JavaScript, kiểm tra hỗ trợ cảm ứng (ví dụ:
('ontouchstart' in window)
) và thay đổi hành vi hiển thị cho phù hợp.
Kiểm thử Tooltip của bạn
Kiểm thử kỹ lưỡng các tooltip của bạn để đảm bảo chúng có thể truy cập được cho tất cả người dùng. Sử dụng kết hợp kiểm thử thủ công và các công cụ kiểm thử khả năng truy cập tự động.
Phương pháp kiểm thử:
- Điều hướng bằng bàn phím: Xác minh rằng các tooltip có thể truy cập được bằng bàn phím.
- Kiểm thử bằng trình đọc màn hình: Sử dụng trình đọc màn hình để đảm bảo rằng các tooltip được thông báo đúng cách.
- Phân tích độ tương phản màu sắc: Sử dụng công cụ kiểm tra độ tương phản màu sắc để xác minh độ tương phản đủ.
- Kiểm thử trên thiết bị di động: Kiểm tra tooltip trên các thiết bị di động và kích thước màn hình khác nhau.
- Kiểm thử khả năng truy cập tự động: Sử dụng các công cụ như axe DevTools, WAVE hoặc Lighthouse để xác định các vấn đề tiềm ẩn về khả năng truy cập.
Quốc tế hóa (i18n) và Địa phương hóa (l10n)
Khi phát triển tooltip cho đối tượng toàn cầu, hãy ghi nhớ quốc tế hóa và địa phương hóa:
- Hướng văn bản: Hỗ trợ cả hướng văn bản từ trái sang phải (LTR) và từ phải sang trái (RTL). Sử dụng các thuộc tính logic của CSS (ví dụ:
margin-inline-start
,margin-inline-end
) thay vì các thuộc tính vật lý (ví dụ:margin-left
,margin-right
) cho bố cục. - Bản dịch theo ngôn ngữ cụ thể: Cung cấp bản dịch nội dung tooltip cho các ngôn ngữ khác nhau.
- Định dạng ngày và giờ: Điều chỉnh định dạng ngày và giờ cho phù hợp với ngôn ngữ của người dùng.
- Định dạng số: Sử dụng các định dạng số phù hợp cho các khu vực khác nhau (ví dụ: dấu phân cách thập phân, dấu phân cách hàng nghìn).
Kết luận
Việc triển khai các tooltip có thể truy cập đòi hỏi sự lập kế hoạch cẩn thận và chú ý đến chi tiết. Bằng cách tuân theo các nguyên tắc và kỹ thuật được nêu trong hướng dẫn này, bạn có thể tạo ra các tooltip mà mọi người đều có thể sử dụng, bất kể khả năng của họ. Hãy nhớ rằng khả năng truy cập là một quá trình liên tục, vì vậy hãy tiếp tục kiểm tra và tinh chỉnh các tooltip của bạn để đảm bảo chúng đáp ứng nhu cầu của tất cả người dùng.