본문 바로가기

HTML/Javascript 기초

[Javascript] 배너 이동하기

버튼 클릭으로 배너를 이동해보자.

배너를 여러개를 한 줄로 나열한 다음

전체를 움직여서 제한된 공간에 배너를 보여주는 코딩을 해보자.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>메뉴 이동하기</title>
    <style>
        div.banner {
            margin-top: 10px;
            width: 260px;
            height: 166px;
            border: 1px solid black;
            position: relative;
            overflow: hidden;
        }
        .banner-container {
            width: 2080;
            position: absolute;
            left: 0;
            top: 0;
        }

        div.banner-container img{
            display: block;
            float: left;
            left: 0;
            top: 0;
            width: 260px;
        }

    </style>
    <script src="../../js/jquery-3.5.1.min.js"></script>
    <script>
        var current_index = 0;
        $(document).ready(function () {
            var $prev = $("#prev"); // 이전 버튼의 변수 저장
            var $next = $("#next"); // 다음 버튼의 변수 저장
            var $banners = $("div.banner .banner-container img"); // 배너 이미지 목록 저장
            var $banner_container = $(".banner-container"); // 배너 전체 이미지
            var banner_width = $banners.eq(0).width(); // 배너 이미지 하나의 폭

            $prev.click(function () {
                current_index--;
                if(current_index <= 0){
                    current_index = $banner_container.length - 1;
                }

                showImage(current_index);
            });

            $("#next").click(function () {
                ++current_index;
                if(current_index >= $banners.length){
                    current_index = 0;
                }

                showImage(current_index);
            });

            function showImage(index){
                // (1) "left" 속성을 이용한 방법
                $banner_container.css("left", -(index*banner_width));
            }
        }
        );
    </script>
</head>

<body>
    <div class="wrap">
        <button id="prev">이전</button>
        <button id="next">다음</button>
        <div class="banner">
            <div class="banner-container">
                <img src="../../images/1.png" class="select">
                <img src="../../images/2.png">
                <img src="../../images/3.png">
                <img src="../../images/4.png">
                <img src="../../images/5.png">
                <img src="../../images/6.png">
                <img src="../../images/7.png">
                <img src="../../images/8.png">

            </div>
        </div>

    </div>
</body>

</html>

 

 

728x90
반응형