1 (function() { 2 // ÐÐ°Ñ Ð¾Ð´Ð¸Ð¼ вÑе ÑÑÑлки и ÑооÑвеÑÑÑвÑÑÑие ÑекÑии 3 const links = document.querySelectorAll('.page-nav a'); 4 const sections = Array.from(links).map(link => { 5 const id = link.getAttribute('href'); 6 return id ? document.querySelector(id) : null; 7 }).filter(Boolean); 8 9 if (sections.length === 0) return; 10 11 const OFFSET = 75; // оÑÑÑÑп Ð´Ð»Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾Ð¹ пÑокÑÑÑки (еÑли еÑÑÑ ÑикÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ñапка) 12 13 // ÐпÑеделение акÑивной ÑекÑии по Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑкÑолла 14 function setActive() { 15 const scrollPos = window.scrollY + OFFSET; 16 let activeIndex = -1; 17 // ÐÑем поÑледнÑÑ ÑекÑиÑ, Ñей веÑÑ Ð½Ðµ вÑÑе scrollPos 18 for (let i = 0; i < sections.length; i++) { 19 if (sections[i].offsetTop <= scrollPos) { 20 activeIndex = i; 21 } else { 22 break; 23 } 24 } 25 // УÑÑанавливаем акÑивнÑй клаÑÑ 26 links.forEach((link, idx) => { 27 if (idx === activeIndex) { 28 link.classList.add('active'); 29 } else { 30 link.classList.remove('active'); 31 } 32 }); 33 } 34 35 // ÐбÑабоÑÑик ÑкÑолла Ñ requestAnimationFrame Ð´Ð»Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ÑÑи 36 let ticking = false; 37 window.addEventListener('scroll', () => { 38 if (!ticking) { 39 requestAnimationFrame(() => {
40 setActive(); 41 ticking = false; 42 }); 43 ticking = true; 44 } 45 }); 46 47 // ÐÐ»Ð°Ð²Ð½Ð°Ñ Ð¿ÑокÑÑÑка пÑи клике 48 links.forEach(link => { 49 link.addEventListener('click', (e) => { 50 e.preventDefault(); 51 const targetId = link.getAttribute('href'); 52 const target = targetId ? document.querySelector(targetId) : null; 53 if (!target) return; 54 const targetPosition = target.offsetTop - OFFSET; 55 window.scrollTo({ top: targetPosition, behavior: 'smooth' }); 56 // Ðгновенно подÑвеÑиваем вÑбÑаннÑй пÑÐ½ÐºÑ 57 links.forEach(l => l.classList.remove('active')); 58 link.classList.add('active'); 59 }); 60 }); 61 62 // ÐапÑÑкаем пÑи загÑÑзке
63 setActive(); 64 })();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.