Код: Выделить всё
let last_wheel_timestamp = -1,
last_fast_wheel_timestamp = -1;
const handle_wheel = (e: WheelEvent): boolean => {
// deltaMode == DOM_DELTA_PIXEL
const div = e.currentTarget as HTMLDivElement;
if (options.wheelHorizontal && e.deltaMode == 0)
{
let multiplier = 2;
if (last_wheel_timestamp != -1 && ((last_wheel_timestamp > Date.now() - 600 && last_wheel_timestamp < Date.now() - 20) || (last_fast_wheel_timestamp !== -1 && last_fast_wheel_timestamp > Date.now() - 100)))
multiplier *= 3,
last_fast_wheel_timestamp = Date.now();
else last_fast_wheel_timestamp = -1;
const delta_y = e.deltaY * multiplier;
let target_scroll = div.scrollLeft + delta_y;
target_scroll = Math.min(target_scroll, div.scrollWidth);
div.scrollTo({ left: target_scroll, behavior: "smooth" });
last_wheel_timestamp = Date.now();
}
options.wheel?.(e as any);
return !div.matches(":hover");
};
Подробнее здесь: https://stackoverflow.com/questions/795 ... ollable-co
Мобильная версия