【问题标题】:How to add dynamic labels along the prev/next arrows in Swiper?如何在 Swiper 中沿 prev/next 箭头添加动态标签?
【发布时间】:2021-08-11 11:48:59
【问题描述】:

您已经在其他滑块上看到了这一点,除了导航箭头之外,您还有一些标签/标题,指示下一张/上一张幻灯片的内容。

希望有人已经这样做了,所以我可以复制和调整代码。如果失败了,我想我会尝试不同的事件监听器,从同级幻灯片中提取文本,并更改​​活动幻灯片的导航 div 的内容。

虽然将标签文本保存为数据属性可能会更好?我不知道。只是在这里集思广益......

【问题讨论】:

    标签: swiper swiperjs


    【解决方案1】:

    我想通了。我没有跟踪活动幻灯片,而是在初始化滑动器时添加标签。在这里分享一下,以防这里有人有类似的问题。

    let homeSwiper = new Swiper('.home-swiper', {
          loop: true,
          navigation: {
            nextEl: '.swiper-button-next',
            prevEl: '.swiper-button-prev',
          },
          on: {
            init: function () {
              addLabels();
            },
          },
        });
    

    每张幻灯片都有一个隐藏的跨度,我将其用作标签。然后我从周围的幻灯片中拉出这些标签:

      function addLabels() {
        let homeSlides = document.querySelectorAll('.home-slider .swiper-slide');
        homeSlides.forEach((slide, i) => {
          let labelPrev, labelNext;
    
          if (i === 0) {
            labelPrev = homeSlides[homeSlides.length - 1].querySelector('span.label').textContent;
            labelNext = homeSlides[i + 1].querySelector('span.label').textContent;
          } else if (i === homeSlides.length - 1) {
            labelPrev = homeSlides[i - 1].querySelector('span.label').textContent;
            labelNext = homeSlides[0].querySelector('span.label').textContent;
          } else {
            labelPrev = homeSlides[i - 1].querySelector('span.label').textContent;
            labelNext = homeSlides[i + 1].querySelector('span.label').textContent;
          }
          slide.querySelector('.slide-nav-label--prev').textContent = labelPrev;
          slide.querySelector('.slide-nav-label--next').textContent = labelNext;
        })
      }
    

    【讨论】:

    • 那么,每张幻灯片都包含 Next/Prev 按钮吗?我认为它们在幻灯片之外,每次当前幻灯片更改时您都必须更新它们。不是这样吗?
    • 下一个 Prev 在 .swiper-wrapper 之外,但在 .swiper-container 之内。除了导航之外,我没有使用它们。我正在使用隐藏元素为每张幻灯片(WP、ACF)提供标签/名称。我使用该元素中的 textContent 来填充标签,我将其绝对定位在上一个/下一个按钮附近。标签本身是可点击的。 .... 虽然现在我必须调试,但 b/c 有时我的上一个下一个标签名称是相同的(不准确地标记上一个/下一张幻灯片)
    • 我明白了......我做了类似的事情,我正在更新 Next/Prev 按钮内的 Span。我有同样的问题,在某个时间点,由于 Swiper 为促进无限循环所做的幻灯片重复,您的下一张和上一张幻灯片在技术上是相同的。我在用于检索 Next 标签的函数中添加了一个 if,并检查当前 ActiveIndex 是否等于上一张幻灯片的索引,如果是,我使用 index = 1 的幻灯片作为 Next。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多