Tooltipster — это мощная библиотека для создания настраиваемых тултипов в JavaScript. Одной из распространённых задач является интеграция тултипов внутри модальных окон, где нужно учитывать особенности динамического отображения элементов и управления слоями.
Когда модальное окно создаётся динамически (например, через
jQuery или сторонние UI-библиотеки), тултипы не всегда
корректно прикрепляются к элементам. Чтобы этого избежать,
инициализацию Tooltipster следует выполнять после вставки
контента модального окна в DOM:
$('#myModal').on('shown.bs.modal', function() {
$('.tooltip-element').tooltipster({
theme: 'tooltipster-light',
animation: 'fade',
delay: 200,
trigger: 'hover'
});
});
Здесь важно использовать событие shown.bs.modal (для
Bootstrap) или аналог для другой библиотеки, чтобы гарантировать наличие
элементов в DOM.
По умолчанию Tooltipster пытается позиционировать тултип относительно
видимой области окна браузера. В модальном окне это может приводить к
неправильному расположению тултипов за пределами модального
контейнера. Решение — использовать опцию
viewport:
$('.tooltip-element').tooltipster({
content: 'Подсказка внутри модалки',
theme: 'tooltipster-light',
side: 'right',
viewport: $('#myModal'), // Ограничение области отображения тултипа
interactive: true
});
Ключевой момент: viewport позволяет тултипу
учитывать только область модального окна, предотвращая
обрезание или выход за границы видимого блока.
Модальные окна часто имеют высокий z-index. Тултипы,
создаваемые Tooltipster, по умолчанию имеют z-index: 9999,
что обычно достаточено, но в сложных интерфейсах может потребоваться
явная настройка:
$('.tooltip-element').tooltipster({
content: 'Тултип над модалкой',
zIndex: 1050 // Должно быть больше z-index модального окна
});
При интеграции с CSS-фреймворками, например, Bootstrap, стоит
убедиться, что z-index тултипа выше, чем у модального окна
и его фонового оверлея.
Если тултип содержит интерактивные элементы (кнопки, ссылки, формы),
важно включить опцию interactive:
$('.tooltip-element').tooltipster({
content: $('<div><button>Нажать</button></div>'),
interactive: true,
trigger: 'click'
});
Это предотвращает закрытие тултипа при попытке взаимодействия с его
содержимым. Часто используется вместе с trigger: 'click'
для удобства работы в модальных окнах.
Внутри модальных окон часто требуется закрывать тултипы при закрытии модалки. Для этого используют методы API Tooltipster:
$('#myModal').on('hide.bs.modal', function() {
$('.tooltip-element').tooltipster('close');
});
Также возможно полностью уничтожить тултип при закрытии окна, чтобы избежать утечек памяти:
$('#myModal').on('hidden.bs.modal', function() {
$('.tooltip-element').tooltipster('destroy');
});
При большом количестве элементов внутри модального окна полезно инициализировать тултипы только при первом открытии или использовать делегирование событий:
$(document).tooltipster({
selector: '.tooltip-element',
theme: 'tooltipster-light'
});
Делегирование позволяет динамически добавленным элементам автоматически получать тултипы без повторной инициализации.
В модальных окнах важно учитывать ограниченное пространство. Tooltipster поддерживает различные анимации и опции позиционирования, чтобы тултипы не перекрывали ключевые элементы интерфейса:
$('.tooltip-element').tooltipster({
animation: 'fade',
animationDuration: 300,
side: ['top', 'bottom'], // Tooltip сначала пытается встать сверху, потом снизу
maxWidth: 250
});
Использование side в виде массива позволяет Tooltipster
автоматически подбирать оптимальное положение тултипа внутри
ограниченного пространства модального окна.
viewport для ограничения области
отображения.z-index, если тултипы перекрываются другими
элементами модального окна.interactive для интерактивного контента.Эти техники обеспечивают корректное отображение и стабильную работу Tooltipster в рамках модальных окон любого типа.