[React] framer motion

Updated:

∙ Framer motion


• What is framer motion ?


• How to use framer motion ?


  • npm i framer-motion

    • 패키지 설치
  • motion.{tag}

    • 애니메이션을 사용할 태그 앞에 motion. 을 붙여줘야 framer motion을 사용할 수 있다.

    • <motion.div animate= />

  • variants

    • variants를 이용해서 보다 깔끔하고 효율적인 코드를 작성할 수 있다.
    • vairants에 애니메이션 값이 담긴 변수를 전달하여 애니메이션을 실행한다.

    • const item = { hidden: { x: -10, opacity: 0 } }
      <motion.li variants={item} />
      
  • drag

    • 드래그 앤 드랍을 구현할 수 있도록 해준다.
  • AnimatePresence

    • 리액트만으로는 구현하기 힘든 컴포넌트가 사라질 때 실행할 애니메이션을 설정할 수 있도록 해준다.

    • export const MyComponent = ({ isVisible }) => (
      <AnimatePresence>
          {isVisible && (
          <motion.div
              initial=
              animate=
              exit=
          />
          )}
      </AnimatePresence>
      )
      
  • useMotionValue

    • 상태와 중력 값 등을 추적할 수 있도록 해준다.
    • 리액트의 상태와 별개의 값이므로 값이 변해도 리렌더링 하지 않는다.
  • useViewPortScroll

    • 스크롤 관련 애니메이션을 구현할 때 자주 사용되는 api 이다.
    • scrollYProgress등을 사용하여 스크롤의 위치를 수치상으로 표현할 수 있다.
  • useTransform

    • 어떠한 수치의 범위를 임의적으로 transform 할 수 있게 도와준다.
    • const rotateZ = useTransform(x, [-800, 800], [-360, 360]);
  • transition

    • 특정한 컴포넌트를 택하거나 default를 사용해서 애니메이션마다 다른 transition을 실행시킬 수 있다.

• Conclusion

  • 태그 안에 속성 값을 주는 것 만으로도 다양한 애니메이션을 구현 할 수 있도록 도와주기 때문에 앞으로 자주 사용 할 것 같은 라이브러리.