티스토리 뷰
중복으로 사용되는 애니메이션을
스타일드 컴포넌트에서 공통으로 사용하기 위해서 작업해보았다.
공통으로 사용할 keyframes 생성
// theme/keyframes.ts
import { css, keyframes } from 'styled-components';
const showElementKeyframes = keyframes`
0% {
opacity: 0;
transform: translateY(50%);
}
100% {
opacity: 1;
transform: translateY(0);
}
`;
export const animation = {
showElement: (duration = '0.4s', delay = '0s') => css`
animation: ${showElementKeyframes} ${duration} ${delay} forwards
ease-out;
`
};
보이지 않다가, 스크롤이 해당 요소쯤에 닿으면 아래에서 위로 올라오면서 나타나는 애니메이션을 하나 만들고
그 애니메이션을 여러 곳에서 쓸 수 있도록 공통으로 작업했다.
해당 애니메이션을 showElementKeyframes 라는 이름에 정의하고,
animation이라는 객체를 생성해서 showElement라는 함수에 해당 애니메이션을 생성하도록 했다.
duration이나 delay는 default값을 정해두긴 했지만, 변수로 받아서 유동적으로 사용할 수 있도록 했다.
개별 컴포넌트에서 적용
export const Content = styled.div`
opacity: 0;
transform: translateY(50%);
${animation.showElement('0.4s', '0.2s')}
`;
개별 컴포넌트에서 사용할 때는 해당 함수를 호출해주면 된다.
그리고 duration, delay등은 매개변수로 받을 수 있도록 해서 유동적으로 시간을 조절할 수 있게 했다.
참고
728x90
'개발 > react' 카테고리의 다른 글
[react] react swiper에서 navigation 커스텀하기 (0) | 2024.10.07 |
---|---|
[React] 버튼 클릭 시 특정 영역으로 스크롤 이동 (1) | 2024.09.26 |
[styled-components] 리액트 styled-components 사용하기 (3) | 2024.08.28 |
[React] 토글 메뉴 외부 영역 클릭 시 닫기 (0) | 2024.02.20 |
[React] 토글 클릭이벤트 구현 (0) | 2023.07.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크