Tooltipster — мощная библиотека для создания всплывающих подсказок в JavaScript, которая предоставляет широкие возможности по управлению поведением и стилем тултипов. Одной из ключевых особенностей является управление областью видимости (viewport), которая позволяет контролировать, как и где подсказка отображается относительно окна браузера или контейнера.
Область видимости в Tooltipster задается через опцию
viewport. Эта опция позволяет указать элемент DOM, внутри
которого тултип должен оставаться видимым. Если тултип выходит за
пределы заданной области, библиотека автоматически корректирует позицию,
чтобы содержимое не обрезалось.
$('.tooltip').tooltipster({
content: 'Пример тултипа',
viewport: $(window) // тултип останется в границах окна
});
Ключевой момент: viewport может быть любым
элементом DOM, что позволяет ограничивать видимость не только
окном браузера, но и конкретным контейнером на странице.
viewportAwareОпция viewportAware отвечает за реакцию тултипа на
границы области видимости. Значение true включает
автоматическое смещение подсказки при приближении к границе, а
false оставляет позицию фиксированной.
$('.tooltip').tooltipster({
content: 'Смещение при границах',
viewportAware: true
});
Если viewportAware: true, тултип будет менять
направление (например, с верхнего на нижнее) при достижении края области
видимости.
functionPositionДля более точного контроля позиционирования используется функция
functionPosition. Она позволяет программно вычислять
координаты тултипа с учётом размеров контейнера и других элементов.
$('.tooltip').tooltipster({
content: 'Точная позиция',
functionPosition: function(instance, helper, position){
// position – объект с текущими координатами
position.coord.left += 10; // смещение по горизонтали
return position;
}
});
Использование functionPosition совместно с
viewport даёт полное управление областью видимости и
динамическим позиционированием.
Если содержимое тултипа изменяется после его открытия, необходимо
учитывать, что размеры подсказки могут измениться. В таких случаях
рекомендуется вызывать метод reposition:
let tooltip = $('.tooltip').tooltipster({
content: 'Изначальное содержимое'
});
tooltip.tooltipster('content', 'Новое содержимое');
tooltip.tooltipster('reposition');
Это гарантирует, что тултип останется в границах области видимости после изменения размеров.
Важный аспект: тултипы Tooltipster вычисляются
относительно offsetParent элемента или контейнера,
заданного в viewport. Если родитель имеет
overflow: hidden или overflow: auto, тултип
может частично обрезаться. Для корректного отображения следует либо:
viewport снаружи контейнера с ограниченным
overflowappendTo:$('.tooltip').tooltipster({
appendTo: 'body',
viewport: $(window)
});
Tooltipster поддерживает смещение тултипа в зависимости от доступного
пространства через опцию side и sideChange.
Если область видимости ограничена, тултип может автоматически сменить
сторону отображения:
$('.tooltip').tooltipster({
side: 'top',
sideChange: true,
viewport: $(window)
});
side — начальное предпочтительное направление (top,
bottom, left, right)sideChange: true — позволяет менять сторону, чтобы
тултип не выходил за границы viewport.viewport для
контейнеров с ограниченной областью, чтобы тултипы не перекрывали другие
элементы.viewportAware: true для
автоматического управления направлением.reposition, чтобы тултип не выходил за границы после
изменения размера.functionPosition и
sideChange для сложных интерфейсов с множеством
ограничений по пространству.Tooltipster предоставляет гибкий инструмент для управления областью видимости, позволяя создавать подсказки, которые адаптируются к различным контейнерам и условиям отображения. Правильная настройка этих опций обеспечивает стабильность интерфейса и предотвращает обрезку или наложение тултипов.