基本上,我的交叉点观察者在我设置他观察的所有元素上都工作得很好,除了这个部分。请帮助
<section class="introduction-section mb-5 watch">
x一个一个一个一个x一个一个二个一个x一个一个三个一个
它应该将类"watch"更改为"in-page",但由于某些原因,在本节中它不会这样做。
正如我所说的手表类得到改变的col-12 divs,但没有对部分,也没有行,因为我尝试了。
我有控制台记录的元素_to_watch节点列表在JS和部分在那里,所以我不明白为什么它不工作...
2条答案
按热度按时间os8fio9y1#
好的,我现在看到了添加的CSS的问题。我不完全理解为什么,但是对于“introduction”元素的花哨CSS,容器(
<section>
)要大得多。因此,将57%的容器放入视口需要更大的视口。我不知道您到底想做什么,但是如果您从
<section>
中去掉“watch”类,然后创建一个具有更小阈值(可能是0.20)的新IntersectionObserver
,并使用该观察器观察该部分(使用相同的回调),您就会明白我在说什么。因此,从
<section>
中删除“watch”后,JavaScript将为:wwwo4jvm2#
我想我知道你想要实现什么。正如你所说的,你想要在每次
Intersection observer
通过页面的特定部分时删除.watch
类。我通过删除.watch
和添加.in-page
来测试代码,反之亦然。打开Google Chrome Elements,在你浏览指定的部分时观察DOM的变化,你会注意到拥有
.watch
类的特定部分的类发生了变化。行部分不会改变,因为你并没有真正应用类
.watch
到它。你只是选择有类监视的DOM元素。我添加了类到每个元素,它工作正常。我希望能给予你一个提示。