Swiper 实现奇葩需求案例

昨天晚上临时接到一个奇葩需求,有一个从左到右的滚动列表,要求实现开屏自动滚动,然后到最后一屏的时候停止不动,右箭头置灰,然后点左侧箭头可以往左滚,同时右箭头功能也恢复。

使用 Swiper 实现了,示例代码如下:

html:

<link rel="stylesheet" href="https://unpkg.com/swiper@8/swiper-bundle.css">
<div class="swiper mySwiper">
    <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 class="swiper-slide">Slide 7</div>
      <div class="swiper-slide">Slide 8</div>
      <div class="swiper-slide">Slide 9</div>
    </div>
    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
</div>
<script type="text/javascript" src="/jquery/jquery.min.js"></script>
<script src="https://unpkg.com/swiper@8/swiper-bundle.js"> </script>  

css:

    html,
    body {
      position: relative;
      height: 100%;
    }
    body {
      background: #eee;
      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
      font-size: 14px;
      color: #000;
      margin: 0;
      padding: 0;
    }
    .swiper {
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .swiper-slide img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

js:

var swiper = new Swiper(".mySwiper", {
      slidesPerView: 5,
      spaceBetween: 30,
      pagination: {
        el: ".swiper-pagination",
        clickable: true,
      },
      loop: false,
      autoplay: {
        delay: 3000,
        stopOnLastSlide: true, 
      },
      navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
      },
});

可以实现需求功能:slidesPerView的参数值根据自己需求设置

在这里插入图片描述

然后最奇葩的需求出现了,要求:从最后一屏开始展示(就是打开首屏显示Slide5-9),左箭头可以点击往左滚动,然后还可以自动滚动,直到最后一屏时还是停止不动。

当时就感觉疯了,这是什么奇葩需求。。。

仔细找了一下 Swiper 的参数,发现还真有可以实现的:‌initialSlide属性用于设置初始化时显示的幻灯片索引‌

// 设置初始显示的slide
initialSlide: $('.swiper-slide').length - 1, // 最后一个slide的索引

总结:

Swiper 的功能实在是太牛了,好多参数仔细研究下还是很有用的。

<think>好的,我现在需要处理用户关于Swiper实现基础滑动效果的请求。首先,用户提供了两个引用,需要检查这些引用内容是否相关。引用[1]提到了在Vue中使用Swiper组件实现左右滑动切换图片的示例代码,而引用[2]涉及鼠标模拟触摸和禁止拖动的设置。用户的提问是希望得到Swiper实现基本滑动的示例或教程,因此需要结合这两个引用信息来构建回答。 首先,我需要确认用户是否在使用Vue.js,因为引用[1]中的代码是Vue相关的。用户的问题中没有明确说明,但提供的引用包含Vue示例,所以可能需要同时提供原生JavaScript和Vue两种环境的示例。不过,用户明确要求的是“基本滑动功能”,可能更倾向于原生实现,但考虑到引用内容,Vue的示例也是必要的。 接下来,我需要回忆Swiper的基础使用方法。Swiper的安装通常通过npm或CDN引入,然后需要初始化配置。基础滑动需要HTML结构包含swiper-container和swiper-wrapper,以及每个slide的swiper-slide类。然后通过JavaScript初始化Swiper实例,并设置基本参数如slidesPerView、spaceBetween、循环模式、分页、导航等。 然后,考虑到用户提供的引用[1]中的代码,Vue中使用的是vue-awesome-swiper组件,需要展示如何导入并使用swiperswiperSlide组件,并在模板中结构。同时,配置项如slidesPerView、导航按钮、分页器也需要说明。引用[2]提到mousewheel控制,可能需要提到如何启用鼠标滚轮滑动,或者禁用拖动功能,但用户需求是基础滑动,所以可能只需提到相关配置的存在。 需要确保示例代码正确,符合Swiper的最新版本语法,比如Swiper 8.x或更早版本是否有差异。例如,分页器的配置可能需要指定el和clickable,导航按钮需要nextEl和prevEl。在Vue示例中,配置项可能需要放在swiperOptions对象中,并在mounted钩子中初始化。 同时,需要检查是否有遗漏的步骤,比如引入CSS样式文件,这对于Swiper的正常显示是必须的。在回答中需要提醒用户添加Swiper的CSS,否则滑动效果可能无法正确呈现。 生成相关问题方面,可能需要包括如何添加分页、自定义样式、自动播放、响应式设计以及禁用拖动等问题,这些都是用户在使用Swiper时常见的后续问题。 最后,确保回答结构清晰,分步骤说明,代码示例正确,并正确引用用户提供的引用内容,将引用标记放在相关说明的末尾。例如,在提到鼠标拖动时引用[2],在Vue示例部分引用[1]。 现在需要组织这些内容,确保符合用户的中文回答要求,使用正确的LaTeX格式(虽然这里可能不需要数学公式,但按照系统指令仍需检查),并且问题相关部分使用§§符号包裹。同时,回答中引用的部分末尾自然添加引用标识,如[^1]和[^2]。</think>以下是使用Swiper实现基础滑动功能的详细说明: ### 一、原生JavaScript实现 1. **安装依赖** 通过CDN引入Swiper: ```html <link rel="stylesheet" href="https://unpkg.com/swiper@8.0.7/swiper-bundle.min.css"> <script src="https://unpkg.com/swiper@8.0.7/swiper-bundle.min.js"></script> ``` 2. **基础HTML结构** ```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> <!-- 分页器 --> <div class="swiper-pagination"></div> <!-- 导航按钮 --> <div class="swiper-button-next"></div> <div class="swiper-button-prev"></div> </div> ``` 3. **初始化脚本** ```javascript const swiper = new Swiper('.swiper', { slidesPerView: 1, // 同时显示1个slide spaceBetween: 30, // slide间距30px loop: true, // 开启循环模式 pagination: { // 分页器配置 el: '.swiper-pagination', clickable: true }, navigation: { // 导航按钮配置 nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }, simulateTouch: true // 允许鼠标拖动[^2] }); ``` ### 二、Vue框架实现(使用vue-awesome-swiper)[^1] ```vue <template> <swiper :options="swiperOptions"> <swiper-slide v-for="(slide, index) in slides" :key="index"> {{ slide.content }} </swiper-slide> <!-- 分页器 --> <div class="swiper-pagination" slot="pagination"></div> </swiper> </template> <script> import { Swiper, SwiperSlide } from 'swiper/vue'; import 'swiper/swiper-bundle.min.css'; export default { components: { Swiper, SwiperSlide }, data() { return { slides: [{content: 'Slide1'}, {content: 'Slide2'}], swiperOptions: { pagination: { el: '.swiper-pagination' }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' } } } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值