styled componets의 컴포넌트 안에 애니메이션을 위한 keyframes 코드를 넣으면 잘 작동한다.
const StyledContainer = styled.div`
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
`;
그러나 keyframes 안의 값을 바꿔야 할 일이 생겼을 때 잘 작동하지 않는 문제가 생겼다.
위 방식이 정상적인 방법이 아니기 때문이다.
styled components에서 keyframes를 사용하려면 아래와 같이 해야 한다.
import styled, { keyframes } from 'styled-components';
const moveRight = (width: number) => keyframes`
from {
transform: translateX(-${width}px);
}
to {
transform: translateY(0);
}
`;
const StyledSliderItems = styled.div<{
width: number;
}>`
animation: 1s linear ${props => moveRight(props.width)} forwards;
`;
keyframes를 styled components에서 import해서 밖으로 꺼내 함수로 만든다.
moveRight의 파라미터인 width를 보면 알 수 있듯이 keyframes 값을 수정할 수 있고
이렇게 keyframes를 밖으로 빼니 width라는 prop이 바뀔 때마다 정상 작동하는 것을 확인했다.
'React > Style' 카테고리의 다른 글
CSS Module (0) | 2020.11.19 |
---|