Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: intersectionobserver, visibility, api

Какие API браузера используются для отслеживания видимости элементов?

Вопрос нужен, чтобы оценить, знает ли кандидат стандартные браузерные API для определения, находится ли элемент в зоне видимости.

Короткий ответ

Основной API для отслеживания видимости элементов — IntersectionObserver. Он позволяет асинхронно узнавать, когда элемент появляется или исчезает из viewport. В более простых случаях используют события скролла и getBoundingClientRect, но это менее эффективно. Современные приложения почти всегда выбирают IntersectionObserver.

Длинный ответ

Отслеживание видимости элементов важно для lazy loading, виртуализации и аналитики.

Основной API: IntersectionObserver

IntersectionObserver сообщает:

  • когда элемент входит в область видимости

  • насколько он видим (intersection ratio)

  • относительно какого контейнера считается видимость

Ключевые особенности:

  • работает асинхронно

  • не требует ручной обработки scroll-событий

  • оптимизирован на уровне браузера

const observer = new IntersectionObserver(entries => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // элемент виден
    }
  })
})

observer.observe(element)

Альтернативные подходы

  1. Scroll + getBoundingClientRect

    • ручной расчёт координат

    • высокая частота вызовов

    • риск проблем с производительностью

  2. ResizeObserver (косвенно)

    • отслеживает изменение размеров

    • используется совместно с IntersectionObserver

  3. Visibility API

    • определяет, активна ли вкладка

    • не про элементы, а про страницу целиком

Когда что использовать

  • lazy loading изображений → IntersectionObserver

  • аналитика просмотра блоков → IntersectionObserver

  • простые сценарии → getBoundingClientRect (с осторожностью)

Краткий вывод

IntersectionObserver — стандартный и наиболее эффективный способ отслеживать видимость элементов. Ручные решения через scroll подходят только для простых или специфических случаев.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#intersectionobserver

#visibility

#api

Подпишись на React Developer в телеграм