Tippy.js предоставляет мощные инструменты для управления положением
всплывающих подсказок и их адаптивной ориентацией. В библиотеке
ориентация реализуется через опцию
placement, которая определяет, где по отношению к
целевому элементу будет отображаться тултип.
Возможные значения placement включают:
top — над элементомbottom — под элементомleft — слева от элементаright — справа от элементаtop-start, top-end,
bottom-start, bottom-end — с привязкой к
началу или концу элементаleft-start, left-end,
right-start, right-end — аналогично для
боковых позицийПример базовой инициализации:
tippy('#myButton', {
content: 'Пример тултипа',
placement: 'top'
});
Для динамических интерфейсов важно, чтобы тултипы автоматически
подстраивались под доступное пространство. В Tippy.js это реализуется
через опцию flip.
flip: true — тултип будет
автоматически менять ориентацию, если исходное положение перекрыто
границами окна.flip: ['top', 'bottom', 'right', 'left']
— задаёт порядок предпочтительных позиций.Пример:
tippy('#myButton', {
content: 'Тултип с автоповоротом',
placement: 'top',
flip: ['bottom', 'top', 'right', 'left']
});
В этом случае тултип сначала пытается отобразиться сверху
(top). Если нет места, он проверяет bottom,
затем right и left.
Опция offset позволяет тонко
настраивать позицию тултипа относительно целевого элемента:
tippy('#myButton', {
content: 'Смещённый тултип',
placement: 'right',
offset: [0, 10] // [skid, distance]
});
skid — смещение по оси, перпендикулярной основной
позиции.distance — расстояние от целевого элемента.Комбинация placement + offset позволяет
создавать адаптивные подсказки, которые не перекрывают другие элементы
интерфейса.
Tippy.js построен поверх Popper.js, что открывает доступ к дополнительным стратегиям позиционирования:
boundary — задаёт границы, за которые
тултип не выезжает (например, родительский контейнер).preventOverflow — предотвращает выход
тултипа за границы экрана или контейнера.flipBehavior — устаревший синоним для
настройки порядка ориентации, сейчас рекомендуется использовать
flip.Пример с ограничением области отображения:
tippy('#myButton', {
content: 'Тултип с ограничением',
placement: 'top',
popperOptions: {
modifiers: [
{
name: 'preventOverflow',
options: {
boundary: document.querySelector('#container')
}
}
]
}
});
Tippy.js позволяет задавать функцию для
placement, чтобы менять ориентацию
динамически:
tippy('#myButton', {
content: 'Динамическая ориентация',
placement: (reference, popper) => {
const rect = reference.getBoundingClientRect();
return rect.top < 100 ? 'bottom' : 'top';
}
});
В этом примере тултип отображается снизу, если элемент близко к верхнему краю окна, иначе сверху.
Когда на странице много тултипов, важно контролировать их контейнеры для предотвращения перекрытий и некорректной ориентации:
appendTo — задаёт, куда добавлять
тултип в DOM.appendTo: 'parent' или указать конкретный контейнер.tippy('.buttons', {
content: 'Тултип внутри контейнера',
placement: 'right',
appendTo: document.querySelector('#scrollableContainer')
});
placement для начального положения.flip для автоматической корректировки.offset для точного позиционирования.boundary и appendTo для
предотвращения выхода за пределы контейнера.placement, если
положение должно зависеть от текущего состояния страницы.Эти инструменты позволяют создавать интерфейсы с точным контролем ориентации тултипов, обеспечивая корректное отображение даже в сложных и динамических макетах.