当父部分在滚动中可见时动画 div

Animate div when parent section is visible on scroll

我有这个工作,但似乎一直搞砸了。

我正在使用滚动劫持,每次滚动时都会将用户带到一个新的section/card。

每次用户滚动到新的 section/card。

时,它会添加一个 visible class

我以此为基础https://codyhouse.co/gem/page-scroll-effects

<section class="cd-section visible">
  <div>
    <h2>Page Scroll Effects</h2>
  </div>
</section>

然后当用户滚动到新部分时,它会删除可见部分并将其添加到下一部分。

我目前正在为每个部分制作基本内容的动画,例如英雄文本等。

<section class="cd-section visible">
  <div class="home__content-slide-right">
    <h2>Page Scroll Effects</h2>
  </div>
</section>

我使用的是class这个名字; home__content-slide-right 在这里暂时使用变换为该文本设置动画,您可以在下面看到;

.home__content-slide-right {
   transform: translateX(-50px);
}

我是怎么做的,只是将 .visible 附加到 CSS 上,您可以在下面看到;

.visible .home__content-slide-right {
  transform: translateX(0);
}

这是有效的,所以当我滚动到每个页面时动画播放,但现在它似乎只在加载整个页面时播放一次,仅此而已。

我试图删除一些东西,但到目前为止还没有成功,只是想知道是否有其他人有它不工作的原因。

------编辑------

我在下面添加了一些图片,以便您了解我的问题所在。

第一张图片包含 .visible class 的部分,因此应该播放动画。

尽管如您所见,当我离开该部分并且 .visible class 被 删除 时,css 保持不变。

您似乎将 "visible" class 应用于目标部分的父元素。

你的css:

.visible .home__content-slide-right {
  transform: translateX(0);
}

是这样写的,因此具有 .visible class 的该元素的任何父元素都将应用此 css 规则。如果你想确保只有在将 visible 添加到同一部分时才会触发,请像这样重写 css:

section.visible .home__content-slide-right {
  transform: translateX(0);
}

或者如果不需要,请确保没有父元素应用可见 class。