[JavaScript] Swiper 예제 - 마우스오버시 일시정지

Lpla

·

2021. 6. 19. 19:22

반응형

Swiper에서 autoplay 파라미터를 사용하여 자동재생 기능을 활성화할 수 있다.

 

const swiper = new Swiper('.swiper-container', {
  autoplay: true,
});

 

autoplaytrue로 3초 마다 자동재생되는 슬라이드를 만들 수 있지만 그다지 추천하는 방법은 아니고 delay와  disableOnInteractionfalse 로 세부 옵션을 추가하는 것이 좋다.

 

const swiper = new Swiper('.swiper-container', {
  autoplay: {
    delay: 2000,
    disableOnInteraction: false,
  },
});

delay는 자동 재생 시간으로 유명하니 넘어가고 disableOnInteraction은 기본값은 true로 사용자가 상호작용 (예를 들어 마우스로 슬라이드를 수동 전환하는 등) 하게 될 경우 자동 재생이 멈추게 된다.

 

하지만 일반적으로 슬라이드를 수동으로 넘기다가 멈추면 다시 알아서 자동 재생되는 것을 원하기 때문에 이 기능은 비활성화하는 것이 좋다.

그리고 pauseOnMouseEnter 파라미터도 있다.

기본값은 false로 mouseEnter 일 때 일시 정지하는 기능인 것으로 추측되지만 정확하게는 마우스를 누르고 있는 상태에서 자동 재생이 멈추는 기능이다.

따라서 이 파라미터로 마우스오버시 일시정지 기능을 사용할 수 없다.

 

파라미터만으로 마우스오버시 일시정지를 구현할 수 없다.

하지만 Swiper 메서드에 이를 해결할 수 있는 단서가 있다.

swiper.autoplay.start();

swiper.autoplay.stop();

 

Swiper의 자동재생 기능을 시작하고 정지하는 메서드다.

이제 이 메서드를 내가 원하는 상황에서 입력하면 된다.

마우스오버 했을 때 swiper.autoplay.start();

마우스오버가 아닐 때 swiper.autoplay.stop();

자바스크립트의 addEventListener 메서드를 사용하여 이벤트를 감지하면 된다.

 

let $slides = document.querySelectorAll('.swiper-slide');
for (let i of $slides) {
  i.addEventListener('mouseover', function(){
    swiper.autoplay.stop();
  });
  i.addEventListener('mouseout', function(){
    swiper.autoplay.start();
  });
}

 

제이쿼리를 사용하면 다음과 같다.

$('.swiper-slide').on('mouseover', function(){
  swiper.autoplay.stop();
});
$('.swiper-slide').on('mouseout', function(){
  swiper.autoplay.start();
});

 

이것으로 마우스오버시 일시정지, 그리고 마우스아웃시 재생되는 Swiper 기능을 만들었다.

 

반응형