Библиотека Tippy.js предоставляет гибкий механизм управления положением всплывающих подсказок относительно элементов DOM. Понимание стратегий позиционирования критически важно для корректного отображения тултипов в различных сценариях интерфейса.
placementКлючевой параметр, определяющий базовую позицию подсказки относительно целевого элемента. Возможные значения:
top, top-start, top-endbottom, bottom-start,
bottom-endleft, left-start,
left-endright, right-start,
right-endПример:
tippy('#button', {
content: 'Подсказка сверху',
placement: 'top'
});
top-start и top-end позволяют смещать
тултип по горизонтали относительно верхней границы элемента, аналогично
для других направлений.
offsetОпция offset позволяет точнее контролировать расстояние
между элементом и подсказкой. Принимает массив
[skidding, distance]:
tippy('#button', {
content: 'Смещённая подсказка',
placement: 'bottom',
offset: [10, 20]
});
flipПлагин flip (по умолчанию включён) автоматически
изменяет положение подсказки, если выбранное место не помещается на
экране. В конфигурации можно управлять логикой:
tippy('#button', {
content: 'Авто-позиция',
placement: 'top',
popperOptions: {
modifiers: [
{
name: 'flip',
options: {
fallbackPlacements: ['bottom', 'right', 'left'],
padding: 10
}
}
]
}
});
fallbackPlacements — список альтернативных позиций при
нехватке местаpadding — минимальное расстояние от границ окнаpreventOverflowДля предотвращения выхода подсказки за границы контейнера
используется модификатор preventOverflow:
tippy('#button', {
content: 'Не вылезет за окно',
popperOptions: {
modifiers: [
{
name: 'preventOverflow',
options: {
padding: 8,
boundary: 'viewport'
}
}
]
}
});
boundary — ограничение (viewport, window, элемент)padding — отступ от границыfollowCursorИногда требуется, чтобы тултип следовал за курсором мыши. В Tippy.js
это реализуется через опцию followCursor:
tippy('#button', {
content: 'Следит за курсором',
followCursor: true,
placement: 'top'
});
followCursor: true — тултип привязывается к координатам
курсораplacement задаёт предпочтительное направление, но
тултип будет динамически адаптироватьсяДля сложных интерфейсов часто используется комбинация
placement, offset, flip и
preventOverflow. Например, для панели с ограниченной
шириной:
tippy('#menu-item', {
content: 'Подсказка с защитой от выхода',
placement: 'right-start',
offset: [0, 5],
popperOptions: {
modifiers: [
{ name: 'flip', options: { fallbackPlacements: ['left-start'] } },
{ name: 'preventOverflow', options: { boundary: 'viewport', padding: 5 } }
]
}
});
Можно задавать стратегию индивидуально для каждого элемента с помощью функции:
tippy('.tooltip', {
content(reference) {
return reference.getAttribute('data-tooltip');
},
placement(reference) {
return reference.dataset.placement || 'top';
}
});
Это позволяет:
placement и offset
для критичных элементов — предотвращает неожиданные
перекрытияflip для адаптивных
интерфейсовpreventOverflow при
работе с модальными окнами и контейнерами фиксированной шириныfollowCursor или
программно обновлять позициюЭффективная стратегия позиционирования обеспечивает стабильное отображение подсказок на любых экранах, минимизирует перекрытия и повышает удобство пользовательского интерфейса.