【问题标题】:Swiper slide - using animate.css to animate elements within slideSwiper 幻灯片 - 使用 animate.css 为幻灯片中的元素设置动画
【发布时间】:2018-07-06 10:13:22
【问题描述】:

编辑:我发现问题出在哪里,当slide设置为loop: true时,会显示元素滑动两次的效果。如何在不将循环设置为 false 的情况下解决此问题?

--

我在 animate.css 旁边使用 swiper 滑块来为幻灯片中的某些元素设置动画。我试图让一个特定的元素从右侧滑入(slideInRight)。

为此,我最初将元素的visibility 设置为hidden,然后将动画类添加到元素并在setTimeout 方法中将可见性设置为可见。

它可以工作,但是有一个小错误,效果中的幻灯片看起来像是经历了 2 个周期。它应该从右侧无缝滑入并落入其位置。要查看实际效果,请运行以下代码:

$(document).ready(function() {

  var swiper = new Swiper('.swiper-container', {
    loop: true,
    pagination: {
      el: '.swiper-pagination',
      clickable: true,
    }
  });

  var swiper = document.querySelector('.swiper-container').swiper;

  setTimeout(function() {
    $('.slide-container').css({
      'visibility': 'visible',
      'opacity': '1'
    }).addClass('animated slideInRight animate-duration-100');
  }, 1000);

  setTimeout(function() {
    $('.sy-title').css({
      'visibility': 'visible'
    }).addClass('animated slideInRight');
  }, 1600);

});
body {
  background: #3E3E3E;
}

.swiper-container {
  max-width: 300px;
}

.slide-container {
  opacity: 0;
  transition: 2s ease-in-out;
  visibility: hidden;
}

.img-fluid {
  max-width: 100%;
}

span.sy-title {
  display: block;
  color: #fff;
  font-weight: bold;
  visibility: hidden;
  font-size: 15px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/css/swiper.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="swiper-container">

  <div class="swiper-wrapper">

    <div class="swiper-slide">
      <div class="slide-container">
        <div class="img-container-1">
          <img class="img-fluid" src="http://placehold.it/500x300?text=slide1">
        </div>
        <div class="sy-info">
          <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
        </div>
        <div class="img-container-2">
          <img class="img-fluid" src="http://placehold.it/500x300?text=slide1">
        </div>
        <div class="sy-availability">
          <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
          <div class="img-container-3">
            <img class="img-fluid" src="http://placehold.it/500x300?text=slide1">
          </div>
        </div>
      </div>
    </div>

    <div class="swiper-slide">
      <div class="slide-container">
        <div class="img-container-1">
          <img class="img-fluid" src="http://placehold.it/500x300?text=slide2">
        </div>
        <div class="sy-info">
          <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
        </div>
        <div class="img-container-2">
          <img class="img-fluid" src="http://placehold.it/500x300?text=slide2">
        </div>
        <div class="sy-availability">
          <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
          <div class="img-container-3">
            <img class="img-fluid" src="http://placehold.it/500x300?text=slide2">
          </div>
        </div>
      </div>
    </div>

    <!-- Add Pagination -->
    <div class="swiper-pagination"></div>

  </div>

【问题讨论】:

    标签: javascript jquery swiper animate.css


    【解决方案1】:

    请更正 HTML 结构,因为滑块显示多个循环。

    $(document).ready(function() {
    
      var swiper = new Swiper('.swiper-container', {
        loop: true,
        pagination: {
          el: '.swiper-pagination',
          clickable: true,
        }
      });
    
      var swiper = document.querySelector('.swiper-container').swiper;
    
      setTimeout(function() {
        $('.slide-container').css({
          'visibility': 'visible',
          'opacity': '1'
        }).addClass('animated slideInRight animate-duration-100');
      }, 1000);
    
      setTimeout(function() {
        $('.sy-title').css({
          'visibility': 'visible'
        }).addClass('animated slideInRight');
      }, 1600);
    
    });
    body {
      background: #3E3E3E;
    }
    
    .swiper-container {
      max-width: 300px;
    }
    
    .slide-container {
      opacity: 0;
      transition: 2s ease-in-out;
      visibility: hidden;
    }
    
    .img-fluid {
      max-width: 100%;
    }
    
    span.sy-title {
      display: block;
      color: #fff;
      font-weight: bold;
      visibility: hidden;
      font-size: 15px;
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/css/swiper.min.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="swiper-container">
    
      <div class="swiper-wrapper">
    
        <div class="swiper-slide">
          <div class="slide-container">
            <div class="img-container-1">
              <img class="img-fluid" src="https://image.yachtcharterfleet.com/charter-CLOUD-9/CLOUD-9-1.jpg?image_id=519748&k=3f0e&w=973&h=470&q=95&o=wc">
                <div class="sy-info">
              <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
            </div>
            </div>
        </div>
        </div>
          
     <div class="swiper-slide">
            <div class="img-container-2">
              <img class="img-fluid" src="https://image.yachtcharterfleet.com/charter-CLOUD-9/CLOUD-9-1.jpg?image_id=519748&k=3f0e&w=973&h=470&q=95&o=wc">
                <div class="sy-availability">
              <span class="sy-title">WATCH THIS TEXT ANIMATION</span>
            </div>
            </div>
          </div>
    
    
     <div class="swiper-slide">
            <div class="img-container-3">
              <img class="img-fluid" src="https://image.yachtcharterfleet.com/charter-CLOUD-9/CLOUD-9-1.jpg?image_id=519748&k=3f0e&w=973&h=470&q=95&o=wc">
            </div>
          </div>
    
    </div>
    
        </div>
    
    
      </div>
    
      <!-- Add Pagination -->
      <div class="swiper-pagination"></div>
    
    </div>

    【讨论】:

    • 你没有更正我的 HTML 结构,你改变了它。一张幻灯片意味着有多个元素。
    • @Manpreet 首先是您没有缩进问题中提供的代码。您仅在页面加载时启动动画的第二件事,而不是在幻灯片更改时。请编辑您的答案并改进并发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2019-09-20
    • 2015-04-21
    相关资源
    最近更新 更多