Tippy.js предоставляет гибкий и удобный способ создания всплывающих подсказок, которые появляются при наведении на элементы. Для базового использования необходимо подключить библиотеку и инициализировать всплывающую подсказку на нужном элементе:
tippy('#myButton', {
content: 'Это подсказка при наведении',
placement: 'top',
trigger: 'mouseenter',
});
Ключевые моменты:
content — текст или HTML, который будет отображён во
всплывающей подсказке.placement — позиция относительно элемента
(top, bottom, left,
right).trigger — событие, вызывающее подсказку. Для наведения
используется 'mouseenter' (по умолчанию).Tippy.js позволяет контролировать время, через которое подсказка
появляется и скрывается. Для этого используются опции delay
и duration:
tippy('#myButton', {
content: 'Подсказка с задержкой',
delay: [500, 200], // [задержка появления, задержка скрытия] в миллисекундах
duration: [300, 300], // анимация появления и скрытия
});
Tippy.js поддерживает HTML-контент для сложных подсказок:
tippy('#myButton', {
content: `
<div>
<strong>Заголовок</strong>
<p>Описание с форматированием</p>
</div>
`,
allowHTML: true,
interactive: true,
});
allowHTML: true разрешает рендер HTML в подсказке.interactive: true позволяет взаимодействовать с
элементами внутри подсказки (например, кнопками или ссылками).Для улучшения визуального восприятия Tippy.js предоставляет встроенные анимации и возможность кастомизации стилей:
tippy('#myButton', {
content: 'Подсказка с анимацией',
animation: 'scale', // варианты: fade, scale, shift-away
theme: 'light-border', // предустановленные темы или кастомные
});
animation определяет тип появления подсказки.theme позволяет применять готовые стили или создавать
свои CSS-классы для оформления.Для случаев, когда необходимо, чтобы пользователь мог
взаимодействовать с подсказкой, используется комбинация
interactive и delay:
tippy('#menuButton', {
content: '<button>Нажми меня</button>',
allowHTML: true,
interactive: true,
delay: [100, 300],
});
Tippy.js построен на Popper.js, что позволяет управлять позиционированием подсказки:
tippy('#myButton', {
content: 'Подсказка с умным позиционированием',
placement: 'auto', // автоматический выбор позиции
popperOptions: {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 10], // смещение по горизонтали и вертикали
},
},
],
},
});
placement: 'auto' позволяет автоматически выбрать
позицию, чтобы подсказка не выходила за пределы видимой области.popperOptions даёт полный контроль над поведением
Popper.js, включая смещения, ограничения и стратегии
позиционирования.Tippy.js поддерживает создание групп подсказок и делегирование событий для динамических элементов:
tippy.delegate(document.body, {
target: '.tooltip', // все элементы с классом .tooltip
content: (reference) => reference.getAttribute('data-tip'),
});
Опции onShow, onHide и
onTrigger позволяют выполнять кастомные действия при
наведении:
tippy('#myButton', {
content: 'Подсказка с колбэками',
onShow(instance) {
console.log('Подсказка показана', instance);
},
onHide(instance) {
console.log('Подсказка скрыта', instance);
},
});
onShow вызывается перед показом подсказки.onHide вызывается перед её скрытием.Для случаев, когда требуется, чтобы подсказка оставалась видимой пока курсор над элементом или самой подсказкой:
tippy('#myButton', {
content: 'Постоянная подсказка',
interactive: true,
sticky: true,
});
sticky: true удерживает подсказку, даже если курсор
уходит на секунду.interactive позволяет создавать
расширенные панели и информативные всплывающие окна.Эффективная подсказка при наведении в Tippy.js должна учитывать:
text или HTML).interactive).onShow,
onHide).Эти инструменты позволяют создавать высоко кастомизируемые и динамичные всплывающие подсказки, которые улучшают взаимодействие пользователя с интерфейсом.