Tooltipster — это современная и гибкая библиотека для создания кастомных тултипов на веб-странице. Она позволяет полностью контролировать внешний вид и поведение всплывающих подсказок, включая анимации, задержки отображения и интерактивное содержимое. Основной принцип работы Tooltipster заключается в привязке тултипа к элементу DOM через jQuery-селектор.
$('.tooltip').tooltipster({
content: 'Пример подсказки',
animation: 'fade',
delay: 200,
theme: 'tooltipster-default'
});
В этом примере:
content — текст или HTML-содержимое тултипа;animation — тип анимации появления;delay — задержка перед показом в миллисекундах;theme — применяемая тема оформления.Tooltipster работает с любыми DOM-элементами, которые можно выбрать
через jQuery. Инициализация происходит вызовом метода
.tooltipster() на выбранных элементах. Можно использовать
несколько вариантов инициализации для разных элементов:
$('.btn-info').tooltipster({
content: $('<span>Интерактивная подсказка</span>'),
interactive: true,
trigger: 'click'
});
$('#help-icon').tooltipster({
content: 'Подсказка при наведении',
delay: 100,
side: 'right'
});
Ключевые моменты и параметры:
interactive: true — позволяет пользователю
взаимодействовать с содержимым тултипа (например, нажимать кнопки внутри
него);trigger — способ вызова: hover,
click, focus или custom;side — сторона, на которой появляется тултип
относительно элемента (top, bottom,
left, right).Tooltipster поддерживает динамическое изменение содержимого тултипа без его уничтожения:
$('#dynamic').tooltipster('content', 'Новое содержимое');
Также можно использовать функцию для генерации содержимого на лету:
$('.tooltip-dynamic').tooltipster({
content: 'Загрузка...',
functionBefore: function(instance, helper){
setTimeout(function(){
instance.content('Содержимое загружено');
}, 500);
}
});
functionBefore выполняется перед показом тултипа и
позволяет подгружать данные асинхронно или формировать их
динамически.
Tooltipster предоставляет встроенные темы и анимации, но возможна кастомизация через CSS и Jav * aScript:
$('.custom-tooltip').tooltipster({
theme: 'tooltipster-shadow',
animation: 'grow',
delay: 300
});
Для полной кастомизации можно создавать собственные CSS-классы:
.tooltipster-mytheme .tooltipster-content {
background-color: #2a2a2a;
color: #fff;
font-size: 14px;
border-radius: 6px;
padding: 10px 15px;
}
Tooltipster позволяет создавать полностью интерактивные тултипы с кнопками, ссылками и формами:
$('.interactive-tooltip').tooltipster({
content: $('<div><p>Введите имя:</p><input type="text"><button>Отправить</button></div>'),
interactive: true,
trigger: 'click'
});
Особенности интерактивных тултипов:
Tooltipster предоставляет события для отслеживания поведения тултипов:
$('.tooltip').on('tooltipster:show', function(){
console.log('Тултип показан');
});
$('.tooltip').on('tooltipster:hide', function(){
console.log('Тултип скрыт');
});
События позволяют:
При E2E тестировании важно учитывать следующие аспекты Tooltipster:
delay, тестам необходимо использовать ожидания
(wait или sleep) до появления элемента.data-attributes, так как
динамически создаваемые элементы могут менять структуру DOM.Пример для Cypress:
cy.get('#help-icon').trigger('mouseenter');
cy.get('.tooltipster-content').should('contain', 'Подсказка при наведении');
cy.get('#help-icon').trigger('mouseleave');
cy.get('.tooltipster-content').should('not.exist');
Этот пример демонстрирует стандартный паттерн тестирования тултипа: наведение, проверка содержимого и скрытие.
interactive: true только там, где это
необходимо, чтобы избежать лишнего усложнения DOM для тестов.delay для
ускорения E2E тестов.functionBefore или промисы, чтобы тесты ожидали корректный
результат.Tooltipster сочетает простоту и гибкость, что делает его удобным инструментом для создания пользовательских подсказок, а также легко интегрируется в автоматизированное тестирование с учетом всех особенностей отображения и интерактивности.