В контексте библиотеки Tippy.js устаревшими считаются функции, методы или параметры конфигурации, которые были заменены более современными и гибкими решениями. Такие элементы сохраняются временно для обратной совместимости, но не рекомендуются к использованию в новых проектах.
Основные причины устаревания:
Использование deprecated-функций может привести к:
arrowTypeРанее использовался для задания типа стрелки:
tippy(element, {
arrow: true,
arrowType: 'sharp'
});
Проблема заключалась в ограниченности вариантов и сложности кастомизации.
Использование свойства arrow с передачей HTML или
SVG:
tippy(element, {
arrow: `<svg>...</svg>`
});
Это позволяет:
animateFillПараметр отвечал за анимацию заливки tooltip:
tippy(element, {
animateFill: true
});
Данный механизм был привязан к отдельному CSS-плагину и усложнял систему анимаций.
Использование CSS-анимаций и свойства animation:
tippy(element, {
animation: 'scale'
});
Преимущества:
performanceИспользовался для оптимизации при большом количестве tooltip-элементов:
tippy('.btn', {
performance: true
});
Позволял откладывать создание экземпляров до момента взаимодействия.
Оптимизация была встроена в ядро библиотеки и стала автоматической.
Tippy.js теперь:
destroyAll()Ранее использовался для удаления всех tooltip:
tippy.destroyAll();
Работа с конкретными экземплярами:
instance.destroy();
или хранение ссылок:
const instances = tippy('.btn');
instances.forEach(instance => instance.destroy());
enable() /
disable() (в старом контексте)Ранее методы могли применяться глобально или без привязки к конкретному экземпляру.
Современная реализация требует явной работы с экземпляром:
instance.disable();
instance.enable();
Это обеспечивает:
data-tippy-*Ранее библиотека активно полагалась на атрибуты:
<button data-tippy-content="Подсказка"></button>
Инициализация:
tippy('[data-tippy-content]');
Явная конфигурация через Jav * aScript:
tippy(element, {
content: 'Подсказка'
});
Преимущества:
followCursor (ранние
версии)Ранее реализовывался как отдельный плагин с нестабильным API.
Современная версия:
import tippy, { followCursor } from 'tippy.js';
tippy(element, {
followCursor: true,
plugins: [followCursor]
});
Изменения:
stickyИспользовался для “прилипания” tooltip к элементу при изменении позиции.
Причина устаревания:
Современная альтернатива — использование возможностей позиционирования Popper.js напрямую.
Ранее использовались устаревшие хуки:
tippy(element, {
onShow(instance) {},
onHide(instance) {}
});
Хотя сами по себе они не удалены, их сигнатура и поведение были изменены.
Callbacks теперь:
return falsetippy(element, {
onShow(instance) {
if (!instance.state.isEnabled) {
return false;
}
}
});
theme: 'light-border' и
подобныеРанее библиотека поставляла набор встроенных тем.
Недостатки:
Создание собственных тем:
tippy(element, {
theme: 'custom'
});
.tippy-box[data-theme~='custom'] {
background-color: #222;
color: #fff;
}
Ранее:
tippy(element, {
content: document.querySelector('#template')
});
Это приводило к:
Использование функции:
tippy(element, {
content(reference) {
return reference.getAttribute('data-template');
}
});
или клонирование:
content: () => template.cloneNode(true)
Ранние версии Tippy.js использовали Popper.js v1, что ограничивало:
Современные версии используют Popper v2 с:
До:
tippy('.btn', {
arrowType: 'sharp',
animateFill: true,
performance: true
});
После:
tippy('.btn', {
arrow: `<svg>...</svg>`,
animation: 'scale'
});
Использование deprecated API:
Современный код на Tippy.js строится вокруг:
Это делает библиотеку более предсказуемой и удобной для масштабирования.