๐ค Web/๐ React
Styled Components - ์ ๋๋ฉ์ด์ , ์ปดํฌ๋ํธ ์ ํ์, ์ค์ฒฉ ์คํ์ผ๋ง
chamroro
2025. 3. 26. 21:35
์ด๋ฒ์ ๋๋ฌ์ด๋ณผ ๊ธฐ์ต์ ..
keyframes ๋ const ๋ก ๋ฐ๋ก ๋นผ์ ๊ด๋ฆฌํ๋ ๊ฑฐ + styled component ์กฐ๊ฑด๋ฌธ์ฒ๋ผ ์ฐ๊ธฐ !!
โ ํ์ ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ
๋จผ์ keyframes๋ฅผ ์ฌ์ฉํด ํ์ ํ๋ ์ ๋๋ฉ์ด์ ์ ์ ์ํ๋ค.
import styled, { keyframes } from "styled-components";
const rotationAnimation = keyframes`
0% {
transform: rotate(0deg);
border-radius: 0px;
}
50% {
border-radius: 100px;
}
100% {
transform: rotate(360deg);
border-radius: 0px;
}
`;
โ Box ์ปดํฌ๋ํธ์ ์ ๋๋ฉ์ด์ ์ ์ฉ
const Box = styled.div`
height: 200px;
width: 200px;
background-color: tomato;
display: flex;
justify-content: center;
align-items: center;
animation: ${rotationAnimation} 1s linear infinite;
${Emoji} {
&:hover {
font-size: 98px;
}
}
`;
- animation: ${rotationAnimation} 1s linear infinite: Box๊ฐ ๋ฌดํํ ํ์
- ${Emoji} &:hover: Box ์์ Emoji ์ปดํฌ๋ํธ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด font-size๊ฐ ์ปค์ง
โ Emoji ์ปดํฌ๋ํธ ์ ์
const Emoji = styled.span`
font-size: 36px;
`;
โ ์ฌ์ฉ
function App() {
return (
<Wrapper>
<Box>
<Emoji>๐คฉ</Emoji>
</Box>
<Emoji>๐ฅ</Emoji>
</Wrapper>
);
}
๊ฒฐ๊ณผ:
- ํ๋์ Box๋ ํ์ ํ๊ณ , ๊ทธ ์์ ์ด๋ชจ์ง๋ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ์ปค์ง
- ๋ฐ๊นฅ์ ์๋ ์ด๋ชจ์ง๋ ํ์ ํ์ง ์๊ณ ๊ทธ๋๋ก ํ์๋จ
- ๋ง์น If ๋ฌธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค !
๋ฐ์ํ