์ด๋ฒ์ ๋๋ฌ์ด๋ณผ ๊ธฐ์ต์ ..
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 ๋ฌธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค !
๋ฐ์ํ
'๐ค Web > ๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Styled Components๋ก ๋ผ์ดํธ/๋คํฌ ๋ชจ๋ ์ ํํ๊ธฐ (0) | 2025.03.26 |
---|---|
Styled Component์์ ์ปดํฌ๋ํธ ํ์ฅํ๊ธฐ (0) | 2025.03.26 |
๋ฆฌ์กํธ ํด๋๊ตฌ์กฐ์ ์ ์์ด ์์๊น (0) | 2023.02.17 |
๊ฐ๋ฐ์๋๊ตฌ ์ผ๋ฌด์ฅ๊ฒ ์ฐ๊ธฐ (0) | 2023.02.17 |
๋ฐ์ํ ์น์์์ ์ปจํ ์ด๋ ํฌ๊ธฐ (0) | 2023.02.17 |
๋๊ธ