交叉口观察者 - 离开视口后如何删除类

Posted

技术标签:

【中文标题】交叉口观察者 - 离开视口后如何删除类【英文标题】:Intersection observer - How do you remove a class after leaving the view port 【发布时间】:2022-01-23 08:42:09 【问题描述】:

当 div 使用 Intersection Observer 进入视口时,我正在添加一个类。当 div 离开视口时,我只是不知道如何删除类。这是我目前所拥有的:

const callback = function (entries) 
    entries.forEach(entry => 
        if(entry.isIntersecting)
        
            entry.target.classList.add('animate1');
          observer.unobserve(entry.target)
          
    );

const observer = new IntersectionObserver(callback);
const targets = document.querySelectorAll('.overlay');
targets.forEach(target => 
    observer.observe(target);
)

【问题讨论】:

两件事:1. 你不能.unobserve() 并期望有另一个观察来确定是否不再有交叉点。 2. 你只需要一个 else 并删除那里的类。 【参考方案1】:

感谢您对兰迪的帮助。我确实让它工作了。这是最终代码:

const observer = new IntersectionObserver(entries => 
  entries.forEach(entry => 
    if (entry.intersectionRatio > 0) 
      entry.target.classList.add('animate1');
    
    else 
      entry.target.classList.remove('animate1');
    
  )
)
const boxElList = document.querySelectorAll('.overlay');
boxElList.forEach((el) => 
  observer.observe(el);
)

【讨论】:

以上是关于交叉口观察者 - 离开视口后如何删除类的主要内容,如果未能解决你的问题,请参考以下文章

元素离开视口时的交点观察者

如何在离子科尔多瓦上删除iPhone X顶部视口角落的空白[重复]

同一页面上多个视频的交叉点观察者

Jquery在滚动'X'视口高度后添加CSS类

LiveData 在第一次回调后删除观察者

React Native:如何在 ScrollView/ListView 子项进入/离开视口时为其设置不透明度动画?