JS

[JS] 자바스크립트 움직이는 배너 만들기

져니져니95 2021. 3. 29. 16:19

2020.03.25(목)

블록체인 기반 핀테크 및 응용 SW 개발자 양성과정 열째날

 

시간이 넘나 빠르다,,,벌써 열흘차라니,,,ㅠㅠㅠ

단시간내에 많은걸 배웠지만 내가 정확히 이해했는지 확신이 없다ㅠㅠ

 

오늘은 경일게임아카데미 사이트에 있는 배너처럼 계속 돌아가는걸 자바스크립트를 이용해서 만드는걸 해봤음!!!

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./main.css">
</head>
<body>
    <div id="banner">
        <ul class="banner1">
            <li class="fadein"><img src="./images/image1.png" alt=""></li>
            <li class="fadein"><img src="./images/image2.png" alt=""></li>
            <li class="fadein"><img src="./images/image3.png" alt=""></li>
            <li class="fadein"><img src="./images/image4.png" alt=""></li>
            <li class="fadein"><img src="./images/image5.png" alt=""></li>
        </ul>
    </div>
    <div id="bannerBtn">
        <ul>
            <li> <input type="button" value="버튼1" onclick="bannerBtn(0)"></li>
            <li> <input type="button" value="버튼2" onclick="bannerBtn(1)"></li>
            <li> <input type="button" value="버튼3" onclick="bannerBtn(2)"></li>
            <li> <input type="button" value="버튼4" onclick="bannerBtn(3)"></li>
            <li> <input type="button" value="버튼5" onclick="bannerBtn(4)"></li>
        </ul>
    </div>
    <script type="text/javascript">
        var index = 0;
        banner();
        function banner(n){
            console.log(n);
            bannerImg = document.querySelectorAll('.banner1>li');
            if (index >= bannerImg.length){
                index = 0;
            }

            if (n != undefined){ //인자값없이 banner() 실행될 때
                index = n;
            }

            for(i=0; i<bannerImg.length; i++){
                if (i==index){
                    bannerImg.item(i).setAttribute('class','show on');
                } else {

                    bannerImg.item(i).setAttribute('class','show');
                }
            }
            index++;
        }

        function bannerBtn(n){
            clearInterval(rolling);
            banner(n);
            rolling = setInterval(banner,3000);
        }

        rolling = setInterval(banner,3000);
    </script>
</body>
</html>

 

var index = 0; -> index 변수값 0부터 시작

banner(); -> banner 함수를 창 열자마자 실행

        function banner(n){

            console.log(n);

            bannerImg = document.querySelectorAll('.banner1>li'); ->banner1의 리스트들 가져와서 배열로 변환

            if (index >= bannerImg.length){

                index = 0;

            } -> bannerImg의 배열 0,1,2,3,4,5까지

 

            if (n != undefined){ //인자값없이 banner() 실행될 때

                index = n;

            }

 

            for(i=0; i<bannerImg.length; i++){

                if (i==index){            -> ==는 비교연산자, =는 대입연산자

                    bannerImg.item(i).setAttribute('class','show on');   -> i와 index 같은 숫자는 class에 show on 

                } else {

                    bannerImg.item(i).setAttribute('class','show');  -> 나머지는 class에 show 

                }

            }

            index++; -> index에 1 더해주기

        }

 

        function bannerBtn(n){ 

            clearInterval(rolling);  -> rolling삭제하기

            banner(n);  

            rolling = setInterval(banner,3000);

        }

 

        rolling = setInterval(banner,3000); -> banner라는 함수를 3초마다 시행해주기, 3000=3초

    </script>