[ JS ] 이미지 슬라이더 라이브러리 적용하기

2024. 6. 13. 18:23· FRONT-END/└ JS

환경 : Visual Studio Code

 

출력 결과

Swiperjs : https://swiperjs.com/

 

[ 1. 기본 슬라이드 ]

<head>
    <script type="text/javascript">
        $(function(){
            var swiper1 = new Swiper('.demo01', {
                //direction: 'vertical',//수평(horizontal) 또는 수직(vertical)
                loop: true,//슬라이드의 순환 여부를 설정(true/false)
                // 페이지 네비게이터 관련 설정
                pagination: {
                    el: '.swiper-pagination',//el은 element(요소)를 의미
                    clickable: true,//클릭 가능 여부 설정
                    type:"bullets",//네비게이터 요소 모양(bullets, fraction, progresbar)
                },
                // 이동 화살표
                navigation: {
                    nextEl: '.swiper-button-next',//다음버튼 선택자
                    prevEl: '.swiper-button-prev',//이전버튼 선택자
                    hideOnClick:true,//클릭하여 숨김처리
                },
            });
        });
    </script>
</head>
<body>
    <div class="container w-500">
        <div class="cell">
            <h2>기본 슬라이드</h2>            
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo01">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
    </div>
</body>

 

[ 2. 자동 슬라이드 ]

<head>
    <script type="text/javascript">
        $(function(){

            var swiper2 = new Swiper('.demo02', {
                //direction: 'vertical',//수평(horizontal) 또는 수직(vertical)
                loop: true,//슬라이드의 순환 여부를 설정(true/false)

                //자동재생 설정
                //autoplay: true,//기본설정
                autoplay: {
                    delay: 5000,//전환간격(ms)
                    pauseOnMouseEnter: true,//마우스가 올라가면 자동재생 중지
                },

                // 페이지 네비게이터 관련 설정
                pagination: {
                    el: '.swiper-pagination',//el은 element(요소)를 의미
                    clickable: true,//클릭 가능 여부 설정
                    type:"bullets",//네비게이터 요소 모양(bullets, fraction, progresbar)
                },
                // 이동 화살표
                navigation: {
                    nextEl: '.swiper-button-next',//다음버튼 선택자
                    prevEl: '.swiper-button-prev',//이전버튼 선택자
                    hideOnClick:true,//클릭하여 숨김처리
                },
            });

        });
    </script>
</head>

<body>

    <div class="container w-500">
        <div class="cell">
            <h2>자동 슬라이드</h2>            
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo02">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
    </div>

</body>

 

[ 3. 전환 효과 설정 ]

<head>
        $(function(){
            var swiper3 = new Swiper('.demo03', {
                //direction: 'vertical',//수평(horizontal) 또는 수직(vertical)
                loop: true,//슬라이드의 순환 여부를 설정(true/false)

                //이펙트 설정
                effect: "flip",//slide, fade, cube, coverflow, flip, creative(custom),

                // 페이지 네비게이터 관련 설정
                pagination: {
                    el: '.swiper-pagination',//el은 element(요소)를 의미
                    clickable: true,//클릭 가능 여부 설정
                    type:"bullets",//네비게이터 요소 모양(bullets, fraction, progresbar)
                },
                // 이동 화살표
                navigation: {
                    nextEl: '.swiper-button-next',//다음버튼 선택자
                    prevEl: '.swiper-button-prev',//이전버튼 선택자
                    hideOnClick:true,//클릭하여 숨김처리
                },
            });

        });
    </script>
</head>

<body>
    <div class="container w-500">

        <div class="cell">
            <h2>전환 효과 설정</h2>            
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>

    </div>
</body>

 

 

[ 4. 여러 슬라이더를 스크립트 코드 한 개로 적용 ]

$(".swiper").each(function(){
     //this == 현재 회차의 .swiper 영역
     var swiper = new Swiper(this, options);
});

      (+) options 객체에 3번의 코드를 담기 

      (+) each() 메소드를 사용하여 반복

      (+) this를 options 객체에 넣어주면 됨~!


[ 4에 대한 전체 코드 ]

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Javascript 예제</title>

    <!-- 구글 폰트 -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">

    <!-- 내가 구현한 스타일 -->
    <link rel="stylesheet" type="text/css" href="../css/commons.css">
    <!--<link rel="stylesheet" type="text/css" href="../css/test.css">-->

    <!-- font awesome 아이콘 CDN -->
    <link rel="stylesheet" type="text/css"
        href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">

    <!-- swiper js cdn -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
    <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

    <style>
        .swiper {
            width: 100%;
            height: 300px;
        }
    </style>

    <!-- jquery cdn -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
    <!-- 내가 만든 스크립트 추가(jQuery를 사용했으니 jQuery CDN 아래 작성) -->
    <script src="commons.js"></script>
    <!-- javascript를 의도적으로 head 자리에 배치해서 가장 먼저 실행되도록 구현-->
    <script type="text/javascript">
        $(function(){
            //목표 : 이미지 슬라이드가 몇 개든 작동하도록 구현
            var options = {
                //direction: 'vertical',//수평(horizontal) 또는 수직(vertical)
                loop: true,//슬라이드의 순환 여부를 설정(true/false)

                //이펙트 설정
                effect: "slide",//slide, fade, cube, coverflow, flip, creative(custom)

                //자동재생 설정
                autoplay: true,//기본설정
                //autoplay: {
                //    delay: 5000,//전환간격(ms)
                //    pauseOnMouseEnter: true,//마우스가 올라가면 자동재생 중지
                //},

                // 페이지 네비게이터 관련 설정
                pagination: {
                    el: '.swiper-pagination',//el은 element(요소)를 의미
                    clickable: true,//클릭 가능 여부 설정
                    type:"bullets",//네비게이터 요소 모양(bullets, fraction, progresbar)
                },
                // 이동 화살표
                navigation: {
                    nextEl: '.swiper-button-next',//다음버튼 선택자
                    prevEl: '.swiper-button-prev',//이전버튼 선택자
                    hideOnClick:true,//클릭하여 숨김처리
                },
            };

            $(".swiper").each(function(){
                //this == 현재 회차의 .swiper 영역
                var swiper = new Swiper(this, options);
            });


        });
    </script>
</head>

<body>

    <div class="container w-500">
        <div class="cell center">
            <h1>이미지 슬라이더(Swiper JS)</h1>
        </div>

        <div class="cell">
            <h2>기본 슬라이드</h2>            
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>
        <div class="cell">
            <!-- Slider main container -->
            <div class="swiper demo03">
                <!-- Additional required wrapper -->
                <div class="swiper-wrapper">
                    <!-- Slides -->
                    <div class="swiper-slide"><img src="https://picsum.photos/id/25/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/27/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/28/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/29/500/300"></div>
                    <div class="swiper-slide"><img src="https://picsum.photos/id/33/500/300"></div>
                </div>
                <!-- If we need pagination -->
                <div class="swiper-pagination"></div>

                <!-- If we need navigation buttons -->
                <div class="swiper-button-prev"></div>
                <div class="swiper-button-next"></div>
            </div>
        </div>

        

    </div>

</body>

</html>

 

 

 

개인 공부 기록용입니다:)

728x90