[miniProjects] 35_Image Carousel

๋ณด๋ฆฌยท2023๋…„ 6์›” 26์ผ
0

miniProjects

๋ชฉ๋ก ๋ณด๊ธฐ
35/47

๐Ÿ’ป์ฃผ์ œ : next, prev ๋ฒ„ํŠผ์„ ํ™œ์šฉํ•œ ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”

โœจJS

let idx = 0 //ํ˜„์žฌ ๋ณด์—ฌ์ง€๋Š” ์ด๋ฏธ์ง€ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ

let interval = setInterval(run , 2000)

function run() {
  idx++
  changeImage()
}

function changeImage() {
  //X์ถ•์œผ๋กœ 500px๋งŒํผ ์ด๋™ํ•˜์—ฌ ์ „ํ™˜ ํšจ๊ณผ๋ฅผ ์คŒ
  if(idx > img.length - 1) {
    idx = 0
  } else if(idx < 0) {
    idx = img.length - 1
  }

  imgs.style.transform = `translateX(${-idx * 500}px)`
}

function resetInterval() {
  `clearInterval(interval)
  interval = setInterval(run, 2000)
}

leftBtn.addEventListener('click', () => {
  idx--
  changeImage()
})
rightBtn.addEventListener('click', () => {
  idx++
  changeImage()
  resetInterval()
})

โ“reset์„ ํ•˜๋Š” ์ด์œ 
์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”๋Š” ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์ „ํ™˜ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด setInterval() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ run() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ „ํ™˜ํ•  ๊ฒฝ์šฐ, ์ž๋™ ์ „ํ™˜ ๊ฐ„๊ฒฉ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ resetInterval() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ interval์„ ๋ฆฌ์…‹ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

profile
์ •์‹ ์ฐจ๋ ค ์ด ๊ฐ๋ฐ•ํ•œ ์„ธ์ƒ์†์—์„œ

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