Tippy.js предоставляет мощный механизм для управления настройками всплывающих подсказок, позволяя задавать глобальные параметры, наследовать их для отдельных элементов и переопределять при необходимости. Это особенно полезно при работе с большим количеством тултипов с общими стилями и поведением, но с локальными отличиями.
Библиотека позволяет определить базовые параметры для всех
тултипов с помощью функции tippy.setDefaultProps.
Эти настройки распространяются на все создаваемые экземпляры Tippy.js,
если для них явно не заданы собственные параметры.
Пример глобальных настроек:
tippy.setDefaultProps({
placement: 'top',
theme: 'light',
delay: [100, 200],
arrow: true
});
В данном случае:
placement: 'top').theme: 'light').arrow: true).Эти параметры действуют как базовая конфигурация, которую можно наследовать или изменять для отдельных элементов.
Каждый отдельный тултип может переопределять глобальные параметры, задавая собственные опции при создании:
tippy('#button1', {
content: 'Привет, мир!',
placement: 'bottom', // Переопределение глобального значения
theme: 'dark' // Локальная тема
});
В этом примере тултип на #button1 будет отображаться
снизу и использовать тёмную тему,
несмотря на глобальные настройки.
Ключевой принцип: локальные настройки имеют приоритет над глобальными. Tippy.js выполняет «слияние» объектов настроек, где конкретные свойства тултипа заменяют значения по умолчанию.
Если на странице множество элементов с одинаковым поведением, можно создать общий контейнер с набором настроек и применить их ко всем потомкам. Например:
tippy('.tooltip', {
placement: 'right',
animation: 'scale',
duration: [300, 250],
arrow: true
});
Здесь все элементы с классом .tooltip наследуют
указанные параметры, что устраняет необходимость настраивать
каждый тултип отдельно.
Tippy.js поддерживает динамическое обновление
настроек уже существующих тултипов через метод
setProps:
const tip = tippy('#dynamic', {
content: 'Старая подсказка',
theme: 'light'
});
tip.setProps({
content: 'Новая подсказка',
theme: 'dark'
});
placement и
arrow) остаются наследуемыми от исходной конфигурации.props для гибкого наследованияTippy.js позволяет задавать настройки через функцию, чтобы вычислять параметры динамически на основе данных элемента:
tippy('.user', (reference) => ({
content: `Пользователь: ${reference.dataset.name}`,
placement: reference.dataset.placement || 'top',
theme: reference.dataset.theme || 'light'
}));
reference — это DOM-элемент, к которому привязан
тултип.Принцип работы Tippy.js при наследовании настроек можно описать так:
tippy.setDefaultProps) применяются ко всем тултипам.tippy(selector, options)) переопределяют глобальные
значения.instance.setProps) изменяют конкретный тултип на лету,
сохраняя остальные параметры.Таким образом достигается максимальная гибкость: можно управлять поведением тултипов на уровне всей страницы, группы элементов или отдельного компонента.
// Глобальные настройки
tippy.setDefaultProps({
placement: 'top',
theme: 'light',
delay: [50, 150],
arrow: true
});
// Группа элементов с локальным переопределением
tippy('.btn', {
placement: 'bottom'
});
// Отдельный элемент с полной локальной конфигурацией
tippy('#special', {
content: 'Особый тултип',
placement: 'left',
theme: 'dark',
delay: [0, 0],
arrow: false
});
.btn наследует глобальные параметры, но меняет
placement.#special полностью переопределяет глобальные
настройки.setProps и функции-конфигураторы позволяют
создавать динамические и адаптивные тултипы, которые
учитывают состояние элемента и его данные.Наследование и переопределение настроек в Tippy.js делает библиотеку удобной для сложных интерфейсов с множеством всплывающих подсказок, обеспечивая единообразие и гибкость одновременно.