首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swiper Slider -活动索引

Swiper Slider -活动索引
EN

Stack Overflow用户
提问于 2019-08-19 06:35:09
回答 2查看 4.9K关注 0票数 0

我正在尝试动画滑块的幻灯片编号(用Swiper制作),但它不能像预期的那样工作,我很难找到我遗漏的东西。底部的幻灯片编号应该会更改,但当我单击它时,什么也不会发生。

以下是代码的JSfiddle

这是html

代码语言:javascript
复制
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.0/css/swiper.min.css">

<!-- Section Testimonies -->
<div class="section testimonial" id="testimonial">
  <div class="swiper-container faded-text">
    <div class="swiper-wrapper">
      <div class="swiper-slide">
        <p class="p-large">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
        </p>
        <p><strong>Johnny Doe</strong></p>
        <p>Lorem ipsum dolor, Company name</p>
      </div>
      <div class="swiper-slide">
        <p class="p-large">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
        </p>
        <p><strong>Johnny Doe</strong></p>
        <p>Lorem ipsum dolor, Company name</p>
      </div>
      <div class="swiper-slide">
        <p class="p-large">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
        </p>
        <p><strong>Johnny Doe</strong></p>
        <p>Lorem ipsum dolor, Company name</p>
      </div>
      <div class="swiper-slide">
        <p class="p-large">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
        </p>
        <p><strong>Johnny Doe</strong></p>
        <p>Lorem ipsum dolor, Company name</p>
      </div>
      <div class="swiper-slide"></div>
    </div>
    <!-- Add Pagination -->
    <div class="swiper-pagination"></div>
    <div class="swiper-navigation">
      <div class="swiper-button-prev"></div>
      <!-- <div class="swiper-counter"><span class="swiper-numbers__current">01</span> / 05</div> -->
      <div class="swiper-counter"></div>
      <div class="swiper-button-next"></div>
    </div>

  </div>
</div>
<!-- / Section Testimonies -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.0/js/swiper.min.js"></script>

css

代码语言:javascript
复制
#testimonial {

  .swiper-container {
    width: 100%;
    height: 100%;

    .swiper-wrapper {

      .swiper-slide {
        text-align: left;
        width: 50%;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-start;
        max-width: 800px;

        .p-large {
          margin-bottom: 120px;
        }
      }

      .swiper-slide-next {
        opacity: 0.3;
      }
    }

    .swiper-navigation {
      margin-top: 200px;
      position: relative;
      max-width: 20vw;
      display: flex;
      justify-content: flex-start;
      align-items: center;

      .swiper-counter,
      .swiper-counter span {
        position: relative;
        z-index: 99999;
      }

      .swiper-counter .next,
      .swiper-counter .count {
        position: relative;
      }

      .swiper-counter .next {
        transform: translateY(-12px);
        right: 10px;
      }

      .swiper-button-prev {
        position: relative;
        top: 0;
        margin-top: 0;
        left: 0;
        background-size: 20px 20px;
      }

      .swiper-counter {
        margin: 0 60px;
      }

      .swiper-button-next {
        position: relative;
        top: 0;
        margin-top: 0;
        right: 0;
        background-size: 20px 20px;
      }
    }
  }
}

最后是javascript

代码语言:javascript
复制
const counter = $('.swiper-counter');
let currentCount = $('<span class="count">1<span/>');
counter.append(currentCount);

function photosChange(swiper) {
  const index = swiper.activeIndex + 1;

  const $current = $('.photo-slide').eq(index);

  const dur = 0.8;

  const prevCount = $('.count');
  currentCount = $(`<span class="count next">${index}<span/>`);
  currentCount.appendTo(counter);
  TweenMax.to(prevCount, dur, {
    y: -12,
    opacity: 0,
    onCompleteParams: [prevCount],

    onComplete(prevCount) {
      prevCount.remove();
    },
    ease: Power4.easeOut,
  });
  TweenMax.fromTo(
    currentCount,
    dur,
    {
      y: 12,
      opacity: 0,
    },
    {
      y: 0,
      opacity: 1,
      ease: Power4.easeOut,
    },
  );
}

const swiper = new Swiper('.swiper-container', {
  slidesPerView: 2,
  spaceBetween: 200,
  loop: false,
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
  onSlideChangeStart: photosChange,
});
EN

回答 2

Stack Overflow用户

发布于 2019-08-19 08:38:45

看起来onSlideChangeStart: photosChange方法不起作用。

您可以将此代码添加到代码的末尾(应该在swiper初始化之后):

代码语言:javascript
复制
swiper.on('slideChange', function () {
  $('.count').text(this.activeIndex + 1);
});

您也可以将photosChange(swiper)的功能传递给此函数。

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-04-03 04:18:09

如果你想得到一个真实的索引,那么使用下面的代码。

代码语言:javascript
复制
swiper.on('transitionEnd', function () {
   $('.count').text(swiper.realIndex + 1);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57548828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档