01. 슬라이드 이펙트 - 트랜지션 효과

이미지가 반복적으로 변하는 효과입니다.

  • javascript
  • {
        window.onload = function(){
            let currentIndex = 0;   // 현재 이미지
            const slider = document.querySelectorAll(".slider");    // 모든 이미지를 변수에 저장
        
            setInterval(() => { // 3초에 한번씩 
                let nextIndex = (currentIndex + 1) % slider.length;       // 0 1 2 3 4 0 1 2 3 4
        
                slider[currentIndex].style.opacity = "0";   // 첫번째 이미지가 사라짐
                slider[nextIndex].style.opacity = "1";  // 두번째 이미지가 나타남
                slider.forEach(img => img.style.transition = "all 1s");  //이미지 애니메이션 추가
        
                currentIndex = nextIndex;   // 두번째 인덱스값을 현재 인덱스값에 저장
        
                console.log(currentIndex)
            }, 3000);
        }
    }
  • jquery
  • <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>     // jquery 사용시 필수 사항
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>      // jquery 사용시 필수 사항
    {
        $(function(){
            let currentIndex = 0;   // 현재 이미지
        
            setInterval(function(){     // 3초에 한번씩 실행
                let nextIndex = (currentIndex + 1) % 5;
        
                $(".slider").eq(currentIndex).fadeOut(1200);    // 첫번째 이미지 사라짐
                $(".slider").eq(nextIndex).fadeIn(1200);    // 두번째 이미지 나타남
        
                currentIndex = nextIndex;
        
            }, 3000);
        });
    }
확인하기

02.슬라이드 이펙트 - 좌로 움직이기

이미지가 좌로 움직이면서 튕기는 효과를 넣어준 것입니다.

  • 선택자와 변수 설정
  • {
        // 선택자
        const sliderWrap = document.querySelector(".slider__wrap");
        const sliderImg = sliderWrap.querySelector(".slider__img");       //보여지는 영역
        const sliderInner = sliderWrap.querySelector(".slider__inner ")    //움직이는 영역;
        const slider = sliderWrap.querySelectorAll(".slider");               // 개별 이미지
    
        // 변수 설정
        let currentIndex = 0;               // 현재 보이는 이미지
        let sliderCount = slider.length;    // 이미지 갯수
        let sliderInterval = 3000;           // 이미지 변경 간격 시간
    }
  • javascript
  • {
        sliderInner.style.transition = "all 0.6s";
    
        setInterval(() => {
            currentIndex = (currentIndex + 1) % sliderCount;
            sliderInner.style.transform = "translateX("+ -800 * currentIndex + "px)";
        }, sliderInterval);
    }
  • gsap
  • <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
    {
        setInterval(() => {
            currentIndex = (currentIndex + 1) % sliderCount;
    
            gsap.to(sliderInner, {
                x: -800 * currentIndex,
                duration: 1,
                ease: "power4.out"
            }) 
        }, sliderInterval);
    }
  • jquery
  • <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>     // jquery 사용시 필수 사항
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>      // jquery 사용시 필수 사항
    {
        setInterval(() => {
            currentIndex = (currentIndex + 1) % sliderCount;
    
            $(".slider__inner").css("position", "relative");
            $(".slider__inner").animate({left: -800 * currentIndex}, 600, "easeOutElastic");
    
        }, sliderInterval);
    }
확인하기

03. 슬라이드 이펙트 - 좌로 움직이기(연속적으로)

이미지가 좌로 연속적으로 움직이는 효과입니다.

  • 선택자와 변수 설정
  • {
        // 선택자
        const sliderWrap = document.querySelector(".slider__wrap");
        const sliderImg = sliderWrap.querySelector(".slider__img");       //보여지는 영역
        const sliderInner = sliderWrap.querySelector(".slider__inner ")    //움직이는 영역;
        const slider = sliderWrap.querySelectorAll(".slider");               // 개별 이미지
    
        // 변수 설정
        let currentIndex = 0;                                               // 현재 이미지
        let sliderCount = slider.length;                                    // 이미지 갯수
        let sliderInterval = 2000;                                          // 이미지 변경 간격 시간
        let sliderWidth = slider[0].offsetWidth                             //이미지 가로값
        let sliderclone = sliderInner.firstElementChild.cloneNode(true);    // 첫번째 이미지를 복사
    }
  • javascript
  • {
        // javascript
        // 복사한 이미지를 마지막에 붙여넣기
        sliderInner.appendChild(sliderclone);
    
        function sliderEffect (){
            currentIndex++;
    
            sliderInner.style.transition = "all 0.6s ease-in";
            sliderInner.style.transform = "translateX(-"+ sliderWidth * currentIndex +"px)";
    
                // 마지막 이미지가 위치 했을 때
                if(currentIndex == sliderCount){
                setTimeout(() => {
                    sliderInner.style.transition = "0s";
                sliderInner.style.transform = "translateX(0px)";
                }, 700);
                currentIndex = 0;
            }
        };
        setInterval(sliderEffect, sliderInterval);
    }
  • gsap
  • <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>   // gsap 사용시 필수
    {
        // 복사한 이미지를 마지막에 붙여넣기
        sliderInner.appendChild(sliderclone);
    
        function sliderEffect() {
            currentIndex++;
    
            gsap.to(sliderInner, {
                x: -sliderWidth * currentIndex,
                druation: 0.6,
                ease: "power2.out"
            });
    
            // 마지막 이미지가 위치 했을 때
            if (currentIndex === sliderCount) {
                setTimeout(() => {
                        gsap.set(sliderInner, {x: 0});
                        currentIndex = 0;
                    }, 700);
            };
        };
        setInterval(sliderEffect, sliderInterval);
    }
  • jquery
  • <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>     // jquery 사용시 필수 사항
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>      // jquery 사용시 필수 사항
    {
        // 복사한 이미지를 마지막에 붙여넣기
        $(".slider__inner").append(sliderclone);
    
        function sliderEffect(){
            currentIndex++;
    
            $(".slider__inner").css({
                "transition": "all 0.6s",
                "transform": "translateX(-"+ sliderWidth * currentIndex + "px)"
            });
    
            // 마지막 이미지가 위치 했을 때
            if(currentIndex === sliderCount){
                setTimeout(() => {
                    $(".slider__inner").css({
                        "transition": "0s",
                        "transform": "translateX(0px)"
                    });
                }, 700);
                currentIndex = 0;
            }
        };
        setInterval(sliderEffect, sliderInterval);
    }
확인하기