Tip/라이브러리

swiper - 흐르는 슬라이드 마우스오버 바로 멈추기

2025. 7. 31.
목차

swiper

swiper를 슬라이드를 만들고 마우스오버 했을 때 멈추는 기능이 있다. autoplay를 추가할 때 disableOnInteraction: false을 사용하면되는데 딜레이 없는 슬라이드에서 마우스오버를 하면 바로 멈추지 않고 슬라이드가 있어야 할 자리까지 도달했을 때 비로소 멈춘다. 이때, 슬라이가 있어야 할 자리까지 이동하지 않고 바로 멈추는 방법이다.

 

 

 

예시

See the Pen 이미지가 있는지 없는지 체크하여 default이미지 뿌려주는 함수. by 슬기 (@hahahoho9) on CodePen.

 

 

 

HTMl 코드

 <div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 1</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 2</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 3</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 4</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 5</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 6</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 7</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 8</div>
    <div class="swiper-slide">연속으로 흘러가는 슬라이드 입니다. 9</div>
  </div>
</div>

 

CSS

.swiper { width:100%; height:100vh; }
.swiper-slide { width:auto; display:flex; align-items:center; padding:60px; }
.swiper-slide:nth-child(3n+1) { background:#fd88a1; }
.swiper-slide:nth-child(3n+2) { background:#f5dfd6; }
.swiper-slide:nth-child(3n) { background:#444; color:#fd88a1; }
.swiper-slide:hover { text-decoration:underline; }

 

JS

let swiper = new Swiper('.swiper', {
  loop: true,
  slidesPerView: 'auto',
  speed: 10000,
  autoplay: {
    delay: 0,
    disableOnInteraction: false,
  },
  allowTouchMove: false,
  on: {
    setTransition: function (swiper, transition) {
      let window_w = window.innerWidth;
      if(transition == 10000) {
        if(window_w <= 1024) swiper.wrapperEl.style.transitionDuration = '4000ms';
        if(window_w <= 767) swiper.wrapperEl.style.transitionDuration = '3000ms';
      }
    },
  },
});

let x;
swiper.el.addEventListener('mouseenter', function() {
  x = swiper.slidesEl.style.transform;
  swiper.slidesEl.style.transform = 'translate3d('+swiper.slidesEl.getBoundingClientRect().left+'px, 0px, 0px)';
  swiper.autoplay.stop();
  return false;
});
swiper.el.addEventListener('mouseleave', function() {
  swiper.slidesEl.style.transform = x;
  swiper.autoplay.start();
  return false;
});

 

카테고리 다른 글 더보기