๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS/Animation

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋น™๊ธ€๋น™๊ธ€

by oranssy 2022. 8. 29.
728x90
๋ฐ˜์‘ํ˜•

โญ๏ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ : ๋น™๊ธ€๋น™๊ธ€ ์  ๋‘˜ โญ๏ธ


01. ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ

์• ๋‹ˆ๋ฉ”์ด์…˜(Animation) ํšจ๊ณผ๋Š” HTML ์š”์†Œ์— ์ ์šฉ๋˜๋Š” CSS ์Šคํƒ€์ผ์„ ๋‹ค๋ฅธ CSS ์Šคํƒ€์ผ๋กœ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณ€ํ™”์‹œํ‚ต๋‹ˆ๋‹ค.
์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋‚˜ํƒ€๋‚ด๋Š” CSS ์Šคํƒ€์ผ๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์—ฐ์†๋œ ์žฅ๋ฉด(sequence)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณต์ˆ˜์˜ ํ‚คํ”„๋ ˆ์ž„(@keyframes)๋“ค๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   @keyframes : CSS ์• ๋‹ˆ๋ฉ”์ด์…˜์—์„œ ๊ตฌ๊ฐ„์„ ์ •ํ•˜๊ณ  ๊ฐ ๊ตฌ๊ฐ„๋ณ„๋กœ ์–ด๋–ค ์Šคํƒ€์ผ์„ ์ ์šฉ์‹œํ‚ฌ์ง€ ์ •ํ•ฉ๋‹ˆ๋‹ค.


02. ์  ๋‘ ๊ฐœ๊ฐ€ ๋น™๊ธ€ ๋„๋Š” ํšจ๊ณผ ๋งŒ๋“ค๊ธฐ

[1] < div > ๋ฐ•์Šค ๋งŒ๋“ค๊ธฐ

div ์•ˆ์— span ์œผ๋กœ ์  ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

<div class="loading">
<span class="circle1"></span>
<span class="circle2"></span>
</div>

[2] CSS ์„ค์ •ํ•˜๊ธฐ

@keyframes ์„ ์ด์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์›€์ง์ž„์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

body {
height: 100vh;
background-image: linear-gradient(180deg, #191970 0%, #4B0082 100%) // ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฐ๊ฒฝ์ƒ‰
}
.loading {
position: absolute;
left: 50%;
top: 50%;
width: 20px;
height: 150px;
animation: loading 1s ease 100; // ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๋๋ถ€๋ถ„์—๋Š” ์ฒœ์ฒœํžˆ ์›€์ง์ด๋„๋ก
}
.loading .circle1 {
display: block;
width: 20px;
height: 20px;
border-radius: 50%;
background: #FFF5EE;
}
.loading .circle2 {
display: block;
width: 20px;
height: 20px;
border-radius: 50%;
background: #F0F8FF;
margin-top: 110px; // ์  ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋–จ์–ด๋œจ๋ ค ๋†“๊ธฐ
}
@keyframes loading {
0% {
transform: translate(-50%, -50%) rotate(0deg)
}
100% {
transform: translate(-50%, -50%) rotate(360deg)
}
}

๊ฒฐ๊ณผ๋ณด๊ธฐ

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€