You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swiper Slider 9.0.5:如何在导航旁显示上/下张幻灯片缩略图

Swiper 9.0.5 导航按钮旁添加对应幻灯片缩略图实现方案

1. 调整HTML结构

自定义导航按钮,并在幻灯片中通过data属性存储对应缩略图路径:

<!-- 自定义导航控件 -->
<div class="swiper-custom-nav">
  <button class="swiper-custom-prev">
    <span class="nav-arrow">←</span>
    <img class="nav-thumb" src="" alt="上一张缩略图">
  </button>
  <button class="swiper-custom-next">
    <img class="nav-thumb" src="" alt="下一张缩略图">
    <span class="nav-arrow">→</span>
  </button>
</div>

<!-- 主轮播容器 -->
<div class="swiper mySwiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">
      <img src="slide1.jpg" alt="主幻灯片1">
      <!-- 存储缩略图路径的隐藏元素 -->
      <div class="slide-thumb-data" data-thumb="thumb1.jpg"></div>
    </div>
    <div class="swiper-slide">
      <img src="slide2.jpg" alt="主幻灯片2">
      <div class="slide-thumb-data" data-thumb="thumb2.jpg"></div>
    </div>
    <!-- 更多幻灯片按此格式添加 -->
  </div>
</div>

2. 编写CSS样式

调整导航按钮布局,让缩略图与箭头并排显示:

.swiper-custom-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  display: flex;
  justify-content: space-between;
  padding: 0 20px;
  pointer-events: none;
}

.swiper-custom-prev, .swiper-custom-next {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
  border: none;
  padding: 10px 15px;
  border-radius: 4px;
  cursor: pointer;
  pointer-events: all;
}

.nav-thumb {
  width: 70px;
  height: 45px;
  object-fit: cover;
  border-radius: 3px;
}

/* 隐藏幻灯片里的缩略图存储元素 */
.slide-thumb-data {
  display: none;
}

3. 初始化Swiper并实现缩略图更新逻辑

通过监听幻灯片切换事件,动态更新导航按钮里的缩略图:

const swiper = new Swiper('.mySwiper', {
  // 保留你原有的轮播配置(如autoplay、effect等)
  navigation: {
    nextEl: '.swiper-custom-next',
    prevEl: '.swiper-custom-prev',
  },
  // 监听初始化和幻灯片切换事件
  on: {
    init() {
      updateNavThumbs(this);
    },
    slideChange() {
      updateNavThumbs(this);
    }
  }
});

// 核心:更新导航缩略图的函数
function updateNavThumbs(swiperIns) {
  const prevThumbEl = document.querySelector('.swiper-custom-prev .nav-thumb');
  const nextThumbEl = document.querySelector('.swiper-custom-next .nav-thumb');
  
  // 计算上一张、下一张幻灯片的索引(兼容非循环模式)
  const totalSlides = swiperIns.slides.length;
  const prevIndex = swiperIns.activeIndex === 0 ? totalSlides - 1 : swiperIns.activeIndex - 1;
  const nextIndex = swiperIns.activeIndex === totalSlides - 1 ? 0 : swiperIns.activeIndex + 1;
  
  // 获取对应幻灯片的缩略图地址
  const prevThumbSrc = swiperIns.slides[prevIndex].querySelector('.slide-thumb-data').dataset.thumb;
  const nextThumbSrc = swiperIns.slides[nextIndex].querySelector('.slide-thumb-data').dataset.thumb;
  
  // 更新缩略图
  prevThumbEl.src = prevThumbSrc;
  nextThumbEl.src = nextThumbSrc;
}

注意事项

  • 若开启loop: true循环模式,Swiper会复制幻灯片,此时需要给原始幻灯片添加标识类(如original-slide),在计算索引时只针对原始幻灯片处理,避免读取复制幻灯片的空数据。
  • 可根据需求调整CSS里的缩略图尺寸、按钮样式,适配页面布局。

内容的提问来源于stack exchange,提问作者Maria K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:53:14