Tippy.js — это мощная библиотека для создания подсказок (tooltips) в JavaScript, которая поддерживает гибкую интеграцию с HTML-элементами и предоставляет расширенные возможности кастомизации. Семантическая разметка в контексте Tippy.js играет ключевую роль, так как позволяет не только улучшить доступность контента, но и обеспечить правильное поведение подсказок при взаимодействии с пользователем.
Tippy.js может автоматически считывать содержимое подсказки из стандартных HTML-атрибутов:
<button id="btn1" title="Это подсказка">Кнопка</button>
tippy('#btn1');
title автоматически скрывается от
стандартного браузера и становится управляемым через Tippy.js.aria-* атрибутов для доступностиTippy.js интегрируется с атрибутами ARIA, обеспечивая корректное взаимодействие с вспомогательными технологиями:
aria-describedby — связывает элемент с подсказкой.role="tooltip" — указывает, что элемент является
подсказкой.<button id="btn2" aria-describedby="tooltip2">Кнопка</button>
<div id="tooltip2" role="tooltip">Подсказка через ARIA</div>
tippy('#btn2', {
content: document.getElementById('tooltip2').innerHTML,
});
Подсказки могут быть встроены в любой HTML-элемент, включая
семантические теги, такие как <section>,
<article>, <aside> и
<figure>. Это позволяет:
Пример с <figure>:
<figure id="figure1">
<img src="image.jpg" alt="Пример изображения">
<figcaption>Описание изображения</figcaption>
</figure>
tippy('#figure1', {
content: 'Дополнительная информация о изображении',
placement: 'top',
});
Семантическая разметка может быть дополнена атрибутами
data-*, которые позволяют хранить контент для подсказок
непосредственно в HTML:
<button data-tippy-content="Динамическая подсказка">Кнопка</button>
tippy('[data-tippy-content]');
data-tippy-content является специальным
атрибутом Tippy.js, который сохраняет содержимое прямо в
разметке.Tippy.js поддерживает инициализацию на уровне группы элементов, сохраняя семантику HTML:
<ul>
<li data-tippy-content="Элемент 1">Пункт 1</li>
<li data-tippy-content="Элемент 2">Пункт 2</li>
<li data-tippy-content="Элемент 3">Пункт 3</li>
</ul>
tippy('ul li');
<ul> и <li>
сохраняется, обеспечивая правильное семантическое представление
списка и удобство для ассистивных технологий.Tippy.js позволяет использовать собственные HTML-шаблоны для подсказок, сохраняя семантическую разметку и улучшая стилизацию:
tippy('#btn3', {
content: '<div role="tooltip"><strong>Важная информация:</strong> Подсказка с форматированием</div>',
allowHTML: true,
});
role="tooltip" сохраняет
доступность, даже при использовании HTML внутри
подсказки.<strong>,
<em>, <p> позволяет
структурировать текст подсказки логически и семантически
корректно.title или data-tippy-content
для хранения текста подсказки.aria-describedby,
role="tooltip") для обеспечения доступности.<section>, <article>,
<figure>, <figcaption>).Эти подходы позволяют сочетать визуальные подсказки с корректной семантической разметкой, повышая удобство использования интерфейсов и улучшая доступность для всех пользователей.