首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止关键帧动画在再次滚动时重新启动?

如何防止关键帧动画在再次滚动时重新启动?
EN

Stack Overflow用户
提问于 2020-12-21 22:55:57
回答 1查看 150关注 0票数 0

我有一个react页面,它的主要部分在视口中的可见性是由一个交叉点观察者观察的。一旦该部分对用户可见,就会触发一个关键帧(通常是从0到1的基本不透明度过渡)。

问题是,每次我向上/向下滚动时,关键帧都会重新开始,从用户体验的角度来看,这是很烦人的。如何防止关键帧动画在发生后再次触发?

下面是一个代码片段:

代码语言:javascript
复制
import { useInView } from "react-intersection-observer";

const reveal = keyframes`
  0% {opacity: 0;}
  100% {opacity: 1;}
`;

const Section = styled.section`
  margin: 64px 0;
`;

const SectionTitle = styled.h3<{ inView: boolean }>`
  opacity: 0;
  animation: ${({ inView }) =>
    inView &&
    css`
      ${reveal} 1s ease forwards
    `};
`;

const Text = styled.p<{ inView: boolean }>`
  opacity: 0;
  animation: ${({ inView }) =>
    inView &&
    css`
      ${reveal} 1.5s ease forwards
    `};
`;


export default function Home() {
  const [about, aboutInView] = useInView();
  const [pricing, pricingInView] = useInView();
  return (
    <div>
      <Header />
        <Section ref={about}>
              <SectionTitle inView={aboutInView}>About</SectionTitle>
              <Text inView={aboutInView}>about text</Text>
        </Section>
        <Section ref={pricing}>
          <Text inView={pricingInView}>pricing text</Text>
        </Section>
    </div>
  );
}

EN

回答 1

Stack Overflow用户

发布于 2021-04-08 01:50:47

调用useInView钩子时设置{triggerOnce: true}

代码语言:javascript
复制
// Generally 
const [ref, inView, entry] = useInView({ threshold: 0, triggerOnce: true });

// Your Case
const [about, aboutInView] = useInView({ triggerOnce: true });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65394965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档