Объект конфигурации в Tippy.js представляет собой набор параметров,
управляющих поведением, внешним видом и жизненным циклом всплывающих
подсказок. Он передаётся вторым аргументом в функцию
tippy() и определяет, как именно будет работать экземпляр
тултипа.
Базовый синтаксис:
tippy(target, {
// параметры конфигурации
});
Каждое свойство объекта конфигурации отвечает за отдельный аспект: от содержимого до анимации и обработки событий.
Объект конфигурации условно делится на несколько логических групп:
contentallowHTMLmaxWidthplacementoffsetpopperOptionstriggerhideOnClickinteractivedelaydurationthemeanimationarrowonShowonHideonMountonDestroyfollowCursorstickyappendToОпределяет содержимое тултипа.
tippy(button, {
content: 'Текст подсказки'
});
Возможные значения:
Пример с функцией:
tippy(button, {
content(reference) {
return `ID: ${reference.id}`;
}
});
Управляет интерпретацией HTML внутри content.
tippy(button, {
content: '<strong>Жирный текст</strong>',
allowHTML: true
});
Если false, HTML будет экранирован.
Определяет позицию тултипа относительно целевого элемента.
Возможные значения:
top, bottom, left,
righttop-start, top-end и т.д.tippy(button, {
placement: 'right'
});
Определяет событие, вызывающее показ тултипа.
tippy(button, {
trigger: 'mouseenter focus'
});
Возможные значения:
mouseenterfocusclickmanualМожно комбинировать события через пробел.
Задержка перед показом и скрытием.
tippy(button, {
delay: [500, 200]
});
Формат:
[show, hide]Длительность анимации.
tippy(button, {
duration: [300, 250]
});
Определяет тип анимации.
tippy(button, {
animation: 'scale'
});
Другие варианты:
fadeshift-awayshift-towardПозволяет задать CSS-тему.
tippy(button, {
theme: 'light'
});
Используется вместе с кастомными стилями:
.tippy-box[data-theme~='light'] {
background-color: white;
color: black;
}
Добавляет стрелку к тултипу.
tippy(button, {
arrow: true
});
Можно передать HTML:
arrow: '<svg>...</svg>'
Разрешает взаимодействие с содержимым тултипа.
tippy(button, {
interactive: true
});
Без этого тултип скрывается при наведении на него.
Определяет поведение при клике.
tippy(button, {
hideOnClick: true
});
Варианты:
truefalse'toggle'Смещение тултипа относительно базовой позиции.
tippy(button, {
offset: [0, 10]
});
Формат:
[skidding, distance]Определяет контейнер, в который будет добавлен тултип.
tippy(button, {
appendTo: document.body
});
Возможны варианты:
Позволяет напрямую управлять поведением Popper.js.
tippy(button, {
popperOptions: {
modifiers: [
{
name: 'preventOverflow',
options: {
padding: 10
}
}
]
}
});
Используется для тонкой настройки позиционирования.
Тултип следует за курсором.
tippy(button, {
followCursor: true
});
Дополнительные значения:
'horizontal''vertical''initial'Обновляет позицию при изменении DOM.
tippy(button, {
sticky: true
});
Ограничивает ширину тултипа.
tippy(button, {
maxWidth: 250
});
Tippy.js предоставляет набор хуков:
Вызывается перед показом:
tippy(button, {
onShow(instance) {
console.log('Показывается');
}
});
onHide(instance) {
console.log('Скрывается');
}
Срабатывает после добавления в DOM:
onMount(instance) {
console.log('Добавлен в DOM');
}
onDestroy(instance) {
console.log('Уничтожен');
}
Экземпляр тултипа можно изменять после создания:
const instance = tippy(button, {
content: 'Привет'
});
instance.setProps({
content: 'Новое значение'
});
Каждое свойство имеет значение по умолчанию. Например:
{
placement: 'top',
trigger: 'mouseenter focus',
animation: 'fade'
}
Переопределяются только необходимые параметры.
Часто используется объединение конфигураций:
const baseConfig = {
animation: 'scale',
theme: 'dark'
};
tippy(button, {
...baseConfig,
content: 'Текст'
});
Позволяет создавать переиспользуемые настройки.
Можно задать глобальные значения:
tippy.setDefaultProps({
delay: 200,
theme: 'light'
});
Все последующие тултипы будут использовать эти параметры.
Некоторые свойства принимают объекты:
tippy(button, {
delay: {
show: 100,
hide: 300
}
});
или массивы:
duration: [400, 200]
Важно учитывать тип данных для каждого параметра.
При конфликте значений применяется следующий порядок:
setDefaultProps)tippy(button, {
content: 'Подсказка',
placement: 'bottom-start',
trigger: 'mouseenter focus',
delay: [200, 100],
duration: [300, 200],
animation: 'shift-away',
theme: 'custom',
arrow: true,
interactive: true,
offset: [0, 8],
maxWidth: 220,
hideOnClick: false,
followCursor: false,
onShow(instance) {
console.log('show');
},
onHide(instance) {
console.log('hide');
}
});
Некоторые параметры активируются через плагины:
import { followCursor } from 'tippy.js';
tippy(button, {
followCursor: true,
plugins: [followCursor]
});
Без подключения плагина параметр не будет работать.
Частые проблемы:
string вместо
number)allowHTMLinteractive и hideOnClickTippy не выбрасывает строгих ошибок, поэтому важно:
console.log(instance.props)Объект конфигурации выступает декларативным описанием поведения тултипа. Он:
Грамотно структурированная конфигурация превращает Tippy.js из простой библиотеки подсказок в мощный инструмент управления интерактивными элементами интерфейса.