Посібник із впровадження доступних підказок, що з'являються при наведенні та фокусуванні, для забезпечення зручності всім користувачам.
Реалізація підказок: доступна інформація при наведенні та фокусуванні
Спливаючі підказки — це невеликі контекстні повідомлення, які з'являються, коли користувач наводить курсор миші на елемент або фокусується на ньому. Вони можуть надавати додаткову інформацію, пояснювати призначення елемента або пропонувати поради щодо використання функції. Однак, якщо підказки реалізовані неправильно, вони можуть стати кошмаром для доступності. Цей посібник описує найкращі практики для створення підказок, якими зможе користуватися кожен, включно з людьми з інвалідністю.
Чому доступність важлива для спливаючих підказок
Доступність — це не лише про відповідність стандартам; це про створення кращого користувацького досвіду для всіх. Коли підказки недоступні, це може виключити користувачів, які покладаються на допоміжні технології, такі як екранні зчитувачі, клавіатурна навігація або голосове введення. Розглянемо такі сценарії:
- Користувачі екранних зчитувачів: Якщо підказка не має належної розмітки, екранний зчитувач може не повідомити про її наявність або вміст.
- Користувачі клавіатури: Якщо підказка з'являється лише при наведенні курсора, користувачі клавіатури не зможуть отримати до неї доступ.
- Користувачі з порушеннями моторики: Точні рухи мишею, необхідні для взаємодії при наведенні, можуть бути складними або неможливими.
- Користувачі з когнітивними порушеннями: Невчасно показана або незрозуміла підказка може викликати розчарування та заважати розумінню.
Дотримуючись найкращих практик доступності, ми можемо гарантувати, що підказки покращуватимуть, а не погіршуватимуть користувацький досвід для всіх.
Ключові принципи доступних підказок
Наступні принципи є вирішальними для створення доступних підказок:
- Надайте альтернативний доступ: Переконайтеся, що підказки доступні як при наведенні курсора, так і при фокусуванні з клавіатури.
- Використовуйте атрибути ARIA: Використовуйте атрибути ARIA (Accessible Rich Internet Applications) для правильної ідентифікації та опису підказок для допоміжних технологій.
- Керуйте фокусом: Контролюйте, куди переміщується фокус, коли підказка відображається та приховується.
- Забезпечте достатню контрастність: Забезпечте достатній колірний контраст між текстом підказки та її фоном.
- Надайте достатньо часу: Дайте користувачам достатньо часу, щоб прочитати вміст підказки.
- Зробіть їх такими, що можна закрити: Надайте чіткий спосіб закрити підказку.
- Уникайте надмірного використання: Використовуйте підказки зрідка і лише за потреби.
Техніки реалізації
1. Використання наведення та фокусування
Найважливішим аспектом доступних підказок є забезпечення їх доступності як для користувачів миші, так і для користувачів клавіатури. Це означає, що підказка повинна з'являтися як при наведенні курсора, так і коли елемент отримує фокус.
HTML:
<a href="#" aria-describedby="tooltip-example">Example Link</a>
<div id="tooltip-example" role="tooltip" style="display: none;">This is an example tooltip.</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; /* Ensure the tooltip is on top */
}
Пояснення:
aria-describedby
: Цей атрибут пов'язує посилання з елементом підказки за допомогою його ID. Це повідомляє допоміжним технологіям, що підказка надає додаткову інформацію про посилання.role="tooltip"
: Ця роль ARIA ідентифікує елемент як спливаючу підказку.- CSS використовує селектор суміжного сусіда (
+
) для відображення підказки, коли на посилання наводять курсор або фокусуються.
JavaScript (Розширене керування - опціонально):
Хоча CSS може впоратися з простим показом/приховуванням, JavaScript дозволяє більш надійне керування, особливо коли підказки генеруються динамічно або потребують складнішої поведінки.
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. Використання атрибутів ARIA
Атрибути ARIA є важливими для надання семантичної інформації допоміжним технологіям. Ось огляд ключових атрибутів:
aria-describedby
: Як згадувалося раніше, цей атрибут встановлює зв'язок між елементом, що викликає підказку, та самою підказкою.role="tooltip"
: Цей атрибут чітко визначає елемент як спливаючу підказку.aria-hidden="true"
/aria-hidden="false"
: Використовуйте їх, щоб вказати, чи є підказка наразі видимою для допоміжних технологій. Коли підказка прихована, встановітьaria-hidden="true"
. Коли вона видима, встановітьaria-hidden="false"
. Це особливо важливо при використанні JavaScript для керування видимістю підказки.
Приклад:
<button aria-describedby="help-tooltip">Submit</button>
<div id="help-tooltip" role="tooltip" aria-hidden="true">Click here to submit the form.</div>
JavaScript (для 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. Керування фокусом
Коли з'являється підказка, вона, як правило, *не повинна* забирати фокус з елемента, що її викликав. Фокус повинен залишатися на елементі, який активував підказку. Це гарантує, що користувачі клавіатури можуть продовжувати навігацію по сторінці без несподіваних переривань.
Однак можуть бути ситуації, коли ви *хочете* перемістити фокус на підказку, особливо якщо вона містить інтерактивні елементи (наприклад, посилання, кнопки). У цьому випадку переконайтеся, що:
- Підказка візуально виділена, щоб показати, що вона у фокусі.
- Існує чіткий спосіб повернути фокус на початковий елемент (наприклад, кнопка закриття всередині підказки).
У більшості випадків краще уникати керування фокусом всередині самої підказки задля простоти та зручності використання.
4. Забезпечення достатньої контрастності
Колірний контраст є вирішальним для читабельності. Переконайтеся, що колір тексту у ваших підказках має достатній контраст відносно кольору фону. Рекомендації з доступності веб-контенту (WCAG) рекомендують коефіцієнт контрастності щонайменше 4.5:1 для звичайного тексту та 3:1 для великого тексту (18pt або 14pt жирний).
Використовуйте онлайн-перевірки контрастності, щоб переконатися, що ваш вибір кольорів відповідає стандартам доступності. Приклади таких інструментів:
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
- Coolors: https://coolors.co/contrast-checker
Приклад (хороший контраст):
.tooltip {
background-color: #000;
color: #fff;
}
Приклад (поганий контраст):
.tooltip {
background-color: #fff;
color: #eee;
}
5. Надання достатнього часу
Користувачам потрібен час, щоб прочитати вміст підказки. Уникайте підказок, які зникають занадто швидко. Хоча магічного числа не існує, орієнтуйтеся на мінімальний час показу в кілька секунд. Також підказка повинна залишатися видимою, доки користувач наводить курсор на елемент або фокусується на ньому. Якщо вам потрібно закрити підказку через інші події, надайте індикатор того, що підказка закриється.
Якщо вміст підказки довгий, розгляньте можливість надати користувачеві спосіб закрити її вручну (наприклад, кнопкою закриття або натисканням клавіші Escape).
6. Можливість закриття
Хоча підказки часто зникають автоматично, коли користувач відводить курсор миші або знімає фокус, гарною практикою є надання чіткого способу закрити їх вручну, особливо для довгих підказок або тих, що містять інтерактивні елементи.
Способи закриття підказок:
- Кнопка закриття: Додайте візуально помітну кнопку закриття всередину підказки.
- Клавіша Escape: Дозвольте користувачам закривати підказку натисканням клавіші Escape.
- Клік поза межами: Закривайте підказку, коли користувач клікає будь-де за межами підказки та елемента, що її викликав. (Використовуйте з обережністю, оскільки це може заважати).
Приклад (Кнопка закриття):
<div id="my-tooltip" role="tooltip" aria-hidden="true">
This is my tooltip content.
<button onclick="hideTooltip()">Закрити</button>
</div>
Приклад (Клавіша Escape):
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
hideTooltip(); // Замініть на вашу функцію приховування підказки
}
});
7. Уникнення надмірного використання
Підказки слід використовувати зрідка і лише тоді, коли вони надають дійсно корисну інформацію. Надмірне використання підказок може захаращувати інтерфейс, відволікати користувачів і створювати негативний досвід.
Альтернативи спливаючим підказкам:
- Чіткі мітки: Використовуйте зрозумілі та описові мітки для полів форм, кнопок і посилань.
- Контекстна допомога: Надавайте довідковий текст безпосередньо в інтерфейсі, поруч із відповідними елементами.
- Довідкова документація: Посилайтеся на вичерпну довідкову документацію для складніших функцій.
Додаткові аспекти
Динамічний вміст
Якщо вміст вашої підказки генерується динамічно (наприклад, завантажується з API або оновлюється на основі дій користувача), переконайтеся, що атрибут aria-describedby
та видимість підказки оновлюються відповідним чином. Використовуйте JavaScript для керування цими оновленнями.
Позиціонування
Ретельно продумайте позиціонування ваших підказок. Уникайте розміщення їх таким чином, щоб вони закривали важливий вміст або викликали зсуви макета. Враховуйте різні розміри екранів та роздільну здатність і використовуйте CSS, щоб підказки завжди були видимі в межах області перегляду.
Мобільні пристрої
Підказки традиційно покладаються на взаємодію при наведенні курсора, яка недоступна на сенсорних пристроях. Для мобільних пристроїв розгляньте альтернативні методи взаємодії, такі як:
- Торкнення: Показувати підказку, коли користувач торкається елемента.
- Довге натискання: Показувати підказку, коли користувач довго натискає на елемент.
- Показ при фокусуванні: Показувати, коли елемент отримує фокус. Цього можна досягти за допомогою JavaScript, перевіряючи підтримку сенсорного введення (наприклад,
('ontouchstart' in window)
) та відповідно змінюючи поведінку відображення.
Тестування ваших підказок
Ретельно тестуйте ваші підказки, щоб переконатися, що вони доступні для всіх користувачів. Використовуйте поєднання ручного тестування та автоматизованих інструментів для перевірки доступності.
Методи тестування:
- Навігація з клавіатури: Перевірте, чи доступні підказки за допомогою клавіатури.
- Тестування екранним зчитувачем: Використовуйте екранний зчитувач, щоб переконатися, що підказки правильно озвучуються.
- Аналіз колірного контрасту: Використовуйте інструмент для перевірки колірного контрасту, щоб переконатися в його достатності.
- Мобільне тестування: Тестуйте підказки на різних мобільних пристроях та розмірах екранів.
- Автоматизоване тестування доступності: Використовуйте такі інструменти, як axe DevTools, WAVE або Lighthouse, для виявлення потенційних проблем з доступністю.
Інтернаціоналізація (i18n) та локалізація (l10n)
При розробці підказок для глобальної аудиторії враховуйте інтернаціоналізацію та локалізацію:
- Напрямок тексту: Підтримуйте напрямки тексту як зліва направо (LTR), так і справа наліво (RTL). Використовуйте логічні властивості CSS (наприклад,
margin-inline-start
,margin-inline-end
) замість фізичних (наприклад,margin-left
,margin-right
) для макета. - Переклади для конкретних мов: Надайте переклади вмісту підказок для різних мов.
- Формати дати та часу: Адаптуйте формати дати та часу до локалі користувача.
- Формати чисел: Використовуйте відповідні формати чисел для різних регіонів (наприклад, десяткові роздільники, роздільники тисяч).
Висновок
Реалізація доступних підказок вимагає ретельного планування та уваги до деталей. Дотримуючись принципів і технік, викладених у цьому посібнику, ви можете створювати підказки, якими зможе користуватися кожен, незалежно від його можливостей. Пам'ятайте, що доступність — це безперервний процес, тому продовжуйте тестувати та вдосконалювати ваші підказки, щоб вони відповідали потребам усіх ваших користувачів.