> Как определить, что элемент находится в viewport в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Для определения, находится ли элемент в видимой области окна (viewport), можно использовать метод IntersectionObserver - это современный и производительный способ. Пример:
JAVASCRIPTconst element = document.querySelector('.my-element');const observer = new IntersectionObserver((entries) => {entries.forEach(entry => {if (entry.isIntersecting) {console.log('Элемент в viewport');} else {console.log('Элемент вне viewport');}});});observer.observe(element);
Если нужна поддержка старых браузеров, можно использовать вычисления через getBoundingClientRect():
JAVASCRIPTfunction isInViewport(element) {const rect = element.getBoundingClientRect();return (rect.top >= 0 &&rect.left >= 0 &&rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&rect.right <= (window.innerWidth || document.documentElement.clientWidth));}
IntersectionObserver предпочтительнее, так как он не вызывает перерасчетов при скролле и работает асинхронно, что снижает нагрузку на производительность.
> Похожие задачи по frontend
Какие события жизненного цикла HTML-страницы существуют
В чем разница между стрелочной и обычной функцией в контексте this в JavaScript?
Вернёт ли метод map в JavaScript новый массив с новыми объектами или с теми же старыми объектами при добавлении свойства к объектам?
В чем разница XML и JSON
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью