MediaWiki:Common.js: відмінності між версіями

нема опису редагування
Немає опису редагування
Немає опису редагування
Рядок 73: Рядок 73:
     function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }
     function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }


    function scrollToTarget(target) {
    function scrollToTarget(target) {
        if (rafId) cancelAnimationFrame(rafId);
 
        var start = window.pageYOffset;
         var end = getTargetTop(target);
         var end = getTargetTop(target);
         if (end === null) return;
         if (end === null) return;
 
         window.scrollTo(0, end);
        if (Math.abs(end - start) < 2) { isAnimating = false; return; }
        setTimeout(updateActive, 50);
 
        isAnimating = true;
        var startTime = null;
 
         function frame(now) {
            if (startTime === null) startTime = now;
            var elapsed = now - startTime;
            var t = Math.min(1, elapsed / DURATION);
 
            // Переміряємо ціль на льоту — layout міг зсунутись
            var currentEnd = getTargetTop(target);
            if (currentEnd === null) currentEnd = end;
 
            window.scrollTo(0, start + (currentEnd - start) * easeOutCubic(t));
 
            if (t < 1) {
                rafId = requestAnimationFrame(frame);
            } else {
                rafId = null;
                isAnimating = false;
                updateActive();
            }
        }
 
        rafId = requestAnimationFrame(frame);
     }
     }