Библиотека Tippy.js предназначена для создания
легких и гибких всплывающих подсказок. Основная точка входа — функция
tippy(), которая позволяет прикреплять тултипы к
DOM-элементам и управлять их поведением через конфигурацию.
tippy('.button', {
content: 'Нажмите здесь',
placement: 'top',
theme: 'light-border',
});
Ключевые параметры:
top, bottom, left,
right).default).fade,
scale, shift-away).[showDelay, hideDelay] в миллисекундах.Tippy.js поддерживает расширяемость через плагины, которые добавляют дополнительные возможности: управление интерактивностью, триггерами, анимацией и т.д. Среди встроенных плагинов:
Каждый плагин подключается через параметр plugins:
tippy('.icon', {
content: 'Информация',
plugins: [followCursor, sticky],
});
Подключение всех доступных плагинов по умолчанию может привести к нескольким негативным последствиям:
Для оптимизации важно подключать только те плагины, которые реально используются в проекте.
Вместо глобального подключения всей библиотеки через CDN или
import 'tippy.js/dist/tippy.css', рекомендуется
использовать модульный подход:
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
// Подключаем только нужные плагины
import { followCursor } from 'tippy.js/plugins/followCursor';
Этот подход позволяет исключить все ненужные плагины из сборки, особенно при использовании Webpack, Vite или Rollup.
Даже при модульном импорте Tippy.js поддерживает указание списка плагинов явно:
tippy('.menu-item', {
content: 'Подсказка',
placement: 'bottom',
plugins: [followCursor], // исключены другие плагины
});
Если не передавать plugins, то по умолчанию тултипы
работают без дополнительных плагинов, что минимизирует нагрузку.
Некоторые плагины можно не подключать вовсе, но их поведение по умолчанию включено через CSS-анимации или глобальные настройки. Для исключения лишних функций используются:
tippy('.button', {
content: 'Пример',
animation: 'none', // отключение анимации animateFill
interactive: false, // отключение интерактивных плагинов
});
Таким образом, библиотека использует минимальный набор кода, даже если соответствующие CSS или JS файлы подключены.
Для проектов с современными сборщиками модулей рекомендуется:
import tippy from 'tippy.js').import { followCursor } from 'tippy.js/plugins/followCursor').Применение этих практик позволяет снизить размер итогового бандла на десятки килобайт и ускорить загрузку страницы.
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
import { followCursor } from 'tippy.js/plugins/followCursor';
tippy('.icon', {
content: 'Детальная информация',
placement: 'right',
animation: 'fade',
delay: [100, 50],
interactive: true,
plugins: [followCursor], // подключен только используемый плагин
});
В этом примере исключены все плагины, которые не применяются, что обеспечивает легкую и быструю работу Tippy.js без лишней нагрузки на страницу.