๐ŸŽจCSS | animation ํ™œ์šฉํ•ด ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ

์›์˜ยท2023๋…„ 4์›” 3์ผ
4

๋งŒ๋“ค์–ด๋ณด๊ธฐ๐Ÿคฉ

๋ชฉ๋ก ๋ณด๊ธฐ
1/4
post-thumbnail

๐Ÿง์ƒํ™ฉ

์ฐธ๊ณ ํ•œ ํฌ์ŠคํŒ… : https://unused-css.com/blog/css-only-background-slider/

์ฒ˜์Œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ JS๋ฅผ ์ด์šฉํ•ด ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ (์ฝ”๋“œ : HTML CSS JS),
์ž‘๋™์€ ํ–ˆ์œผ๋‚˜ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ๋•Œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†์—ˆ๊ณ  ๋ญ”๊ฐ€ ํ•˜์ž๊ฐ€ ๋งŽ์•˜์Œ๐Ÿ’ฃ

๊ตฌ๊ธ€๋ง ํ›„ css animation ๋งŒ ํ™œ์šฉํ•ด ์ž๋™ ์Šฌ๋ผ์ด๋”๋ฅผ ๋งŒ๋“  ํฌ์ŠคํŒ…์„ ๋ฐœ๊ฒฌํ•ด์„œ ๋‚ด css ์ฝ”๋“œ์— ์ ์šฉ์‹œ์ผœ ๋ดค๋Š”๋ฐ, ์ดํ•ด๊ฐ€ ํ•˜๋‚˜๋„ ๋˜์ง€ ์•Š์•˜๋‹ค......๐Ÿ˜ญ ์ด ๊ธ€์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๐Ÿฅ”๊ฐ์ž๐Ÿฅ”์˜ ๋ชธ๋ถ€๋ฆผ



๐Ÿ”Ž์ž๋™ ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ

  • ์ด๋ฏธ์ง€ 3๊ฐœ ์ž๋™์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ์Šฌ๋ผ์ด๋”
  • 3๊ฐœ ์ด๋ฏธ์ง€ ๋‹ค ๋„๋Š”๋ฐ 7.5์ดˆ๋กœ ์„ค์ •
    ์ฆ‰, ์ด๋ฏธ์ง€ 1๊ฐœ๋‹น 2.5์ดˆ

๐Ÿ’ก์ „์ฒด ์ฝ”๋“œ

  • HTML
<div class="slider">
    <div class="slide"></div>
    <div class="slide"></div>
    <div class="slide"></div>
  </div>
  • CSS - ๊พธ๋ฉฐ์ฃผ๋Š” ์†์„ฑ์€ ํŽธ์˜์ƒ ์ œ๊ฑฐ
.slider {
  position: relative;
  overflow: hidden;
  
  width: 600px;
  height: 400px;
}

.slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;

  animation: slider 7.5s infinite linear;
}

.slide:nth-child(1) {
  background-image: url(img1.jpg);
  animation-delay: 0;
}
.slide:nth-child(2) {
  background-image: url(img2.jpg);
  animation-delay: -2.5s;
}
.slide:nth-child(3) {
  background-image: url(img3.jpg);
  animation-delay: -5s;
}

@keyframes slider {
  0% {
    transform: translateX(0);
  }

  26% {
    transform: translateX(0);
  }
  33% {
    transform: translateX(-100%);
    animation-timing-function: step-end;
  }
  93% {
    transform: translateX(100%);
  }

  100% {
    transform: translateX(0);
  }
}

๐Ÿ’กslide ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ

.slide{
	animation: slider 7.5s infinite linear;
}
  • <div class='slide'> ์š”์†Œ 3๊ฐœ์— slider animation ์ ์šฉ
.slide:nth-child(1) {
  animation-delay: 0;
}
.slide:nth-child(2) {
  animation-delay: -2.5s;
}
.slide:nth-child(3) {
  animation-delay: -5s;
}
  • ์ฒซ ๋ฒˆ์งธ slide - animation ์ง€์—ฐ์‹œ๊ฐ„์„ 0๋กœ ์ค˜์„œ animation 0% ๋ถ€ํ„ฐ ์‹คํ–‰
  • ๋‘ ๋ฒˆ์งธ slide - animation ์ง€์—ฐ์‹œ๊ฐ„ -2.5์ดˆ ์œผ๋กœ ์ค˜์„œ animation 0% ์—์„œ 2.5์ดˆ ์‹คํ–‰ํ•œ ๋’ค์˜ ์ƒํƒœ๋ถ€ํ„ฐ ์‹คํ–‰
  • ์„ธ ๋ฒˆ์งธ slide - animation ์ง€์—ฐ์‹œ๊ฐ„ -5์ดˆ ์œผ๋กœ ์ค˜์„œ animation 0% ์—์„œ 5์ดˆ ์‹คํ–‰ํ•œ ๋’ค์˜ ์ƒํƒœ๋ถ€ํ„ฐ ์‹คํ–‰

    2.5์ดˆ?
    slider animation ์‹คํ–‰๋˜๋Š” ์‹œ๊ฐ„ 7.5์ดˆ์˜ 1/3์ด๋ฏธ์ง€๊ฐ€ 3๊ฐœ๋ผ์„œ ์ „์ฒด ์‹œ๊ฐ„์„ 3์œผ๋กœ ๋‚˜๋ˆ”
    aimation์€ 100% / 3 = 33%๋กœ, 2.5์ดˆ ์•ˆ์— animation์˜ 33%๊ฐ€ ์‹คํ–‰๋จ



๐Ÿ’กanimation ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ

  • ์ดํ•ด๋ฅผ ์œ„ํ•ด ์Šฌ๋ผ์ด๋“œ ํ•˜๋‚˜๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ์‹œ์ผœ ๋ด„

โ“์˜๋ฌธ์ 
1. 33% ~ 93% ์‚ฌ์ด์— ์˜ค๋ฅธ์ชฝ ๋์œผ๋กœ ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋™์•ˆ ์–ด๋–ป๊ฒŒ ์•ˆ๋ณด์ด๋Š”๊ฑฐ์ง€?
2. animation-timing-function: step-end; ์˜ ์—ญํ• ์ด ๋ญ์ง€?

1์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด 2๋ฅผ ์•Œ์•„์•ผํ•˜๋”๋ผ..

animation-timing-function: step-start, step-end ์†์„ฑ

  • animation-timing-function์€ animation์ด ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ๊ฒฐ์ •ํ•ด์ฃผ๋Š” ์†์„ฑ์ด๊ณ , ๋Œ€ํ‘œ์ ์œผ๋กœ ease, linear, ease-in, ease-out ๋“ฑ์˜ ๊ฐ’์„ ๊ฐ€์ง
  • step-start, step-end ๋Š” ์ฒ˜์Œ๋ดค๋Š”๋ฐ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ฉด,

step-start : 0%๊ฐ€ ๋˜์ž๋งˆ์ž ๋ฐ”๋กœ ๋‹ค์‹œ ์‹คํ–‰, ๋ˆˆ์œผ๋กœ ๋ดค์„ ๋•Œ 0% ์ƒํƒœ ๋ณผ ์ˆ˜ X
step-end : 100%๊ฐ€ ๋˜์ž๋งˆ์ž 0%๋กœ ๋ฐ”๋กœ ๋‹ค์‹œ ์‹คํ–‰, ๋ˆˆ์œผ๋กœ ๋ดค์„ ๋•Œ 100% ์ƒํƒœ ๋ณผ ์ˆ˜ X

  • ์ดํ•ด๋ฅผ ์œ„ํ•œ ์˜ˆ์‹œ
    step-start๋Š” 0% ๋˜์ž๋งˆ์ž ๋ฐ”๋กœ ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰, ๋นจ๊ฐ„์ƒ‰ ๋ˆˆ์— ์•ˆ๋ณด์ž„
    step-end๋Š” 100% ๋˜์ž๋งˆ์ž ๋ฐ”๋กœ 0% ์‹คํ–‰, ํŒŒ๋ž€์ƒ‰ ๋ˆˆ์— ์•ˆ๋ณด์ž„

  • ๊ทธ๋ ‡๋‹ค๋ฉด 33%์— animation-timing-function: step-end; ์†์„ฑ์„ ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด?

  • ์ด๋ฏธ์ง€ ์ง€๋‚˜๊ฐ€์œ ~ ๋จ

  • ์ฆ‰, animation-timing-function: step-end; ๋Š” 93%๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ ๊ณ„์† 33%์˜ ์ƒํƒœ๋กœ ์žˆ์œผ๋ž€ ์˜๋ฏธ๋กœ, ์ง€๋‚˜๊ฐ€๋Š” ๊ณผ์ •์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ฒŒ ๋จ!!


๐Ÿ’ก๊ฒฐ๊ณผ

๋ฉ‹์Ÿ์ด ์Šฌ๋ผ์ด๋“œ ์™„์„ฑ^ใ…^/

profile
ํ™”์ดํŒ…~~^ใ…^/

0๊ฐœ์˜ ๋Œ“๊ธ€