Добавить задержку перед сменой слайдов - PullRequest
0 голосов
/ 16 февраля 2019

Я использую Swiper Slider.Есть ли способ, чтобы после нажатия кнопок «Далее» и «Назад» добавить задержку перед сменой слайда?Например: я нажимаю на следующую кнопку, жду 1 секунду и перехожу к следующему слайду.Я нуждаюсь в этом, потому что я сделал свою собственную анимацию, используя CSS, и это занимает приблизительно.1 секунда, чтобы закончить полностью.

Надеюсь, вы, ребята, можете помочь мне с этим.

Вот код:

var swiper = new Swiper('.swiper-container', {
      navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
      },
    });
.swiper-container {
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;
      /* Center slide text vertically */
      display: -webkit-box;
      display: -ms-flexbox;
      display: -webkit-flex;
      display: flex;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      -webkit-justify-content: center;
      justify-content: center;
      -webkit-box-align: center;
      -ms-flex-align: center;
      -webkit-align-items: center;
      align-items: center;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="swiper-container">
      <div class="swiper-wrapper">
        <div class="swiper-slide">Slide 1</div>
        <div class="swiper-slide">Slide 2</div>
        <div class="swiper-slide">Slide 3</div>
        <div class="swiper-slide">Slide 4</div>
      </div>
      <!-- Add Arrows -->
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>

1 Ответ

0 голосов
/ 16 февраля 2019

Это работает так, как вы просили.

Удалив ваши определения навигации, мы можем затем написать наши собственные действия для следующей и предыдущей кнопок.

Я использовал setTimeout, чтобы ждатьзаданное количество времени до запуска встроенных следующих / предыдущих функций из вашей библиотеки.

Я также добавил немного CSS, чтобы кнопки казались отключенными в течение этого периода, чтобы пользователь понимал, что он должен нажать снова.


Демо

// Initialise swiper
var swiper = new Swiper('.swiper-container');

// Define delay (in milliseconds)
swiperDelay = 2000;

// Add event to previous button
$('.swiper-button-prev.enabled').click(function(){
  
  // Disable swiper buttons so user doesnt click again
  $(".swiper-button").removeClass("enabled");
  
  // Set timeout for previous slide move
  setTimeout(function(){      
  
    // Move to previous slide
    swiper.slidePrev(); 
    
    // Re-enable swiper buttons
    $(".swiper-button").addClass("enabled");
    
    }, swiperDelay);

});


// Add event to next button
$('.swiper-button-next.enabled').click(function(){
   
  // Disable swiper buttons so user doesnt click again
  $(".swiper-button").removeClass("enabled");

  // Set timeout for next slide move
  setTimeout(function(){      
    
    // Move to next slide
    swiper.slideNext(); 
    
    // Re-enable swiper buttons
    $(".swiper-button").addClass("enabled");
    
    }, swiperDelay);

});
.swiper-container {
  width: 100%;
  height: 100%;
}
.swiper-slide {
  text-align: center;
  font-size: 18px;
  background: #fff;
  /* Center slide text vertically */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.swiper-button {
  opacity: 0.4;
  transition: 0.3s all;
}
.swiper-button.enabled {
  opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.4.6/js/swiper.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.4.6/css/swiper.min.css" />
<div class="swiper-container">
  <div class="swiper-wrapper">
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
    <div class="swiper-slide">Slide 4</div>
  </div>
  <!-- Add Arrows -->
  <div class="swiper-button-next enabled swiper-button"></div>
  <div class="swiper-button-prev enabled swiper-button"></div>
</div>
...