STEP 3 _ ๐Ÿ–‹ Carousel ๋ณต์Šต

roadzmoon76ยท2022๋…„ 3์›” 15์ผ
0

๋ฐ”๋‹๋ผ์ฝ”๋”ฉ Starter Kit

๋ชฉ๋ก ๋ณด๊ธฐ
10/10

๐Ÿง‘โ€๐Ÿ’ป ์ฝ”๋“œ

(function () {
    const $imgs = document.querySelectorAll("img");
    const $leftArrow = document.querySelector(".fa-arrow-left");
    const $rightArrow = document.querySelector(".fa-arrow-right");
    const $dots = document.querySelectorAll("li");
    let currentIndex = 0;

    function previousImg() {
        if (currentIndex === 0) {
            $imgs[currentIndex].style.order = `${0}`;
            currentIndex = 4;
            $imgs[currentIndex].style.order = `${-1}`;
        } else {
            $imgs[currentIndex].style.order = `${0}`;
            currentIndex--;
            $imgs[currentIndex].style.order = `${-1}`;
        }
    }

    function nextImg() {
        if (currentIndex === 4) {
            $imgs[currentIndex].style.order = `${0}`;
            currentIndex = 0;
            $imgs[currentIndex].style.order = `${-1}`;
        } else {
            $imgs[currentIndex].style.order = `${0}`;
            currentIndex++;
            $imgs[currentIndex].style.order = `${-1}`;
        }
    }

    $leftArrow.addEventListener(("click"), previousImg);
    $rightArrow.addEventListener(("click"), nextImg);

    for (let i = 0; i < $dots.length; i++) {
        $dots[i].className += ` ${i}`;
    }

    for (let i = 0; i < $dots.length; i++) {
        $dots[i].addEventListener(("click"), (e) => {
            $imgs[currentIndex].style.order = `${0}`;
            currentIndex = Number(e.target.classList[1]);
            $imgs[currentIndex].style.order = `${-1}`;
        });
    }
})();

๐Ÿง‘โ€๐Ÿซ ์ฝ”๋“œ ์„ค๋ช…

  • ์ฒ˜์Œ ํ–ˆ์„ ๋•Œ๋Š” ๋ฐ˜๋ณต์ ์ด์˜€๋˜ ์ฝ”๋“œ๋“ค์„ ์ตœ๋Œ€ํ•œ for๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

  • ๋‹น์‹œ์—” ๋งˆ์šฐ์Šค์ด๋ฒคํŠธ์˜ e์ธ์ž์˜ ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ์จ์•ผํ• ์ง€ ๋ชฐ๋ผ ํด๋ฆญํ•œ ์ ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š”๋ฐ ๊ณ ์ƒํ–ˆ๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” ํ•ด๋‹น ์š”์†Œ์˜ ์ˆœ์„œ์— ๋งž๋Š” index๋ฅผ ํด๋ž˜์Šค์— ๋„ฃ์–ด์ฃผ๊ณ  e.target.classList[1] ๋กœ ์ ‘๊ทผํ•ด ์‚ฌ์šฉํ•ด์„œ ํ›จ์”ฌ ์ˆ˜์›”ํ–ˆ๋‹ค.

  • ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ๋˜ ์ฝ”๋“œ๋Š” ๋ฐ˜์‘์ด ๋Š๋ ธ์—ˆ๋Š”๋ฐ ์ง€๊ธˆ๊นŒ์ง€ ๊ณต๋ถ€ํ•œ๊ฑธ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋™์  style ๋ณ€ํ™”๋ฅผ ๋„ˆ๋ฌด ์ž์ฃผ์ค˜์„œ ์“ธ๋ฐ์—†๋Š” ๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ๊ฐ€ ๊ณ„์† ์ผ์–ด๋‚˜์„œ ๊ทธ๋Ÿฐ๊ฒƒ๊ฐ™๋‹ค. ์˜ค๋Š˜ ๋งŒ๋“  ์ฝ”๋“œ๋Š” ์ง€๋‚œ๋ฒˆ๋ณด๋‹จ ํ™•์‹คํžˆ ๋™์  style ๋ณ€ํ™”๊ฐ€ ์ ๊ฒŒ๋“ค์–ด๊ฐ”๋‹ค.

๐ŸŒ GitHub, Netlify

https://github.com/roadzmoon76/Carousel_repeat
https://carousel-repeat.netlify.app/

profile
ํฌ๋ก ๋ณ‘๊ฑธ๋ฆฐ ์žํ‡ด์ƒ, ๊ฐœ๋ฐœ์ž๋˜๊ธฐ

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