Задать вопрос
@historydev

Как закрашивать элемент при пересечении жёлтой линии (intersactionObserver)?

Каллбэк почему-то сразу отрабатывает для всех, при установке. Вывожу в логи индекс, сначала он пробегается по всем, следом если скроллить индекс 0-1.
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
RAX7
@RAX7
const container = document.querySelector('.container');
const line = document.querySelector('.invisibility');

const marginBottom = line.getBoundingClientRect().top - container.getBoundingClientRect().bottom;

const options = {
  root: document.querySelector('.container'),
  rootMargin: `0px 0px ${marginBottom}px 0px`,
  threshold: 0
}

const callback = function(entries, observer) {
  entries.forEach((entry) => {
    entry.target.style.background = entry.isIntersecting ? 'green' : 'red';
  });
};

const observer = new IntersectionObserver(callback, options);

container.querySelectorAll('.item').forEach(item => {
  observer.observe(item);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы