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

Swiper实现按页导航而非按项导航的方法

实现Swiper整页切换+分页点对应页数的配置方法

要实现导航按钮切换整页、分页点数量等于页数的效果,通过Swiper核心参数配置+自定义分页渲染即可完成,具体步骤如下:

1. 核心参数配置(实现整页切换)

设置slidesPerView为每页显示的slide数量,同时将slidesPerGroup设为相同值,这样next/prev按钮点击时会直接切换整组(整页)的slide,而非单个slide。

2. 自定义分页渲染(让分页点数量等于页数)

默认分页点按总slide数生成,需通过pagination.renderBullet自定义渲染逻辑,只生成对应页数的点;同时通过onClick绑定分页点跳转事件,确保点击分页点能跳转到对应页。

完整代码示例

HTML结构

<div class="swiper">
  <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 class="swiper-slide">Slide 5</div>
    <div class="swiper-slide">Slide 6</div>
  </div>
  <div class="swiper-pagination"></div>
  <div class="swiper-button-next"></div>
  <div class="swiper-button-prev"></div>
</div>

JS配置

const swiper = new Swiper('.swiper', {
  slidesPerView: 3, // 每页显示3个slide
  spaceBetween: 20, // slide之间的间距
  slidesPerGroup: 3, // 每次切换整组(和slidesPerView值一致)
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
  pagination: {
    el: '.swiper-pagination',
    clickable: true,
    // 自定义渲染分页点,仅生成对应页数的点
    renderBullet: function (index, className) {
      const totalSlides = this.slides.length;
      const slidesPerView = this.params.slidesPerView;
      const totalPages = Math.ceil(totalSlides / slidesPerView);
      
      // 只渲染对应页数的点
      if (index < totalPages) {
        return `<span class="${className}" data-index="${index}"></span>`;
      }
      return '';
    },
    // 绑定分页点点击事件,跳转到对应页的起始位置
    onClick: function (swiperInstance, event) {
      const target = event.target;
      if (target.classList.contains('swiper-pagination-bullet')) {
        const pageIndex = parseInt(target.getAttribute('data-index'));
        swiperInstance.slideTo(pageIndex * swiperInstance.params.slidesPerView);
      }
    }
  }
});

3. 循环模式下的适配(可选)

如果开启了loop模式,由于Swiper会自动复制前后组slide,计算总页数时需要排除复制的slide:

// 在renderBullet中调整总slide数计算
const originalSlideCount = this.slides.length - 2 * this.params.slidesPerView;
const totalPages = Math.ceil(originalSlideCount / this.params.slidesPerView);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:57:47