Tooltipster предоставляет возможность управлять временем отображения
подсказок с помощью опции delay. Однако
для точного контроля над минимальным временем показа используется
параметр minWidth совместно с событиями
open и
close, либо более специализированные
настройки в последней версии плагина. Минимальное время показа задаёт
интервал, в течение которого тултип остаётся видимым, даже если
пользователь сразу покидает элемент.
delayОпция delay управляет задержкой перед показом
тултипа:
$('.tooltip-element').tooltipster({
content: 'Пример подсказки',
delay: 300 // задержка в миллисекундах перед появлением
});
Для минимального времени отображения delay недостаточно,
поэтому применяются дополнительные методы.
Tooltipster позволяет подписываться на события
open и
close, чтобы вручную контролировать время
видимости:
let minShowTime = 1000; // минимальное время отображения в мс
$('.tooltip-element').tooltipster({
content: 'Тултип с минимальным временем',
trigger: 'hover',
functionReady: function(instance, helper){
const startTime = Date.now();
helper.origin.dataset.tooltipStart = startTime;
},
functionBefore: function(instance, helper){
const startTime = helper.origin.dataset.tooltipStart;
if (startTime){
const elapsed = Date.now() - startTime;
if (elapsed < minShowTime){
return new Promise(resolve => setTimeout(resolve, minShowTime - elapsed)).then(() => true);
}
}
return true;
}
});
functionReady срабатывает, когда
тултип готов к показу.functionBefore позволяет отсрочить
закрытие до истечения минимального времени.Promise, чтобы асинхронно
задержать скрытие.animationDurationЕсли требуется плавная анимация с контролем времени видимости, можно
настроить animationDuration совместно с таймерами:
$('.tooltip-element').tooltipster({
content: 'Анимированный тултип',
animationDuration: 400,
functionBefore: function(instance, helper){
if (!helper.origin.dataset.showTimestamp){
helper.origin.dataset.showTimestamp = Date.now();
}
},
functionAfter: function(instance, helper){
const elapsed = Date.now() - helper.origin.dataset.showTimestamp;
const remaining = 800 - elapsed; // 800 мс минимального показа
if (remaining > 0){
return new Promise(resolve => setTimeout(resolve, remaining)).then(() => {});
}
}
});
functionAfter срабатывает после начала
закрытия тултипа.animationDuration определяет скорость появления и
исчезновения, но минимальное время можно контролировать независимо.trigger: hover и
trigger: click. Для клика можно комбинировать с
autoClose: false, чтобы тултип не исчезал раньше
времени.dataset),
чтобы не было конфликта при следующем открытии.$('.form-input').tooltipster({
content: 'Заполните поле корректно',
delay: 200,
functionAfter: function(instance, helper){
const elapsed = Date.now() - helper.origin.dataset.showTimestamp;
if (elapsed < 1000){
return new Promise(resolve => setTimeout(resolve, 1000 - elapsed));
}
}
});
$('.button-tooltip').tooltipster({
content: 'Нажмите для действия',
animation: 'fade',
animationDuration: 300,
functionBefore: function(instance, helper){
helper.origin.dataset.startTime = Date.now();
},
functionAfter: function(instance, helper){
const remaining = 1200 - (Date.now() - helper.origin.dataset.startTime);
if (remaining > 0){
return new Promise(resolve => setTimeout(resolve, remaining));
}
}
});
Эти подходы позволяют добиться точного контроля над временем отображения подсказок, что критично для UX при быстрых наведениях, динамическом контенте и сложных интерфейсах.