vue项目中swipe自定义pagination,navigationButton,鼠标滑过暂停播放

本文介绍了在Vue项目中使用vue-awesome-swiper实现自定义轮播图,包括分页器、前后翻页按钮以及鼠标悬停暂停轮播的功能。通过设置swiperOptions配置,分离轮播图结构和控制器样式,实现了独立控制样式的效果。同时,详细讲解了如何通过事件监听和Swiper提供的API实现鼠标悬停时自动播放的暂停和恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在vue项目中使用了swipe,为了修改样式踩了不少坑记录一下。

先上最终成果图

项目要求自定义分页器,前后按钮,以及鼠标滑过时暂停轮播

下载安装

npm install swiper@5.x vue-awesome-swiper

注意一下这里使用的是swiper5

本地注册

import { Swiper, SwiperSlide,} from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'

export default {
  components: {
    Swiper,
    SwiperSlide
  }
}

组件内的代码要分成两部分,轮播图一部分(swiper-wrapper),控制器一部分(swipe-control),划重点!控制按钮放在swiper-wrapper的外面才能控制样式。

swiper-wrapper部分:

<div class="swiper-w" @mouseenter="on_stop" @mouseleave="on_start">
      <swiper ref="myswiper" :options="swiperOptions">
        <swiper-slide v-for="item in bannerList" :key="item.id">
          <div class="swiper-wrap">
            <div class="clip">
              <img :src="item.url" alt="" />
            </div>
            <p class="swiper-title">{{ item.inof }}</p>
          </div>
        </swiper-slide>
      </swiper>
</div>

swipe-control部分(直接接着上面的代码往下放):

<div class="swiper-c">
      <div class="button-prev" slot="button-prev">
        <i class="el-icon-arrow-left"></i>
      </div>
      <div class="button-next" slot="button-next">
        <i class="el-icon-arrow-right"></i>
      </div>
      <div class="swiper-pagination" slot="pagination"></div>
      <div class="line"></div>
</div>

就这样搭好结构不写任何配置和样式如下:

可以看到当我们把轮播图和控制器分开结构之后,样式也跟着结构一起脱钩了

然后这个布局用flex一把梭就不用我多说了吧

虽然此时控制器的样式已经脱离了swipe的掌控,但是上面的三个小点除外,我们需要在配置中添加他的类名

swiperOptions:{
    pagination: {
          el: ".swiper-pagination",
          clickable: true,
          bulletClass: "my-bullet",
          bulletActiveClass: "my-bullet-active",
    },
}

bulletClass 表示小圆点未选中时

bulletActiveClass 选中时

定义好了类名,还要在css中定义你的样式

.swiper-pagination .my-bullet {
    border-radius: 50%;
    width: 6px;
    height: 6px;
    margin: 4px;
    background: rgba(255, 255, 255, 0.5);
    display: block;
    transition: width 0.3s;
    cursor: pointer;
  }
  .swiper-pagination .my-bullet-active {
    display: block;
    background: #ffffff;
    width: 20px;
    height: 4px;
    border-radius: 4px;
  }

至于上下翻页按钮也是同样修改配置然后对着类名修改你的样式,和上面基本一样

// 在swiperOptions中
navigation: {
          nextEl: ".button-next",
          prevEl: ".button-prev",
  },

最后说一下鼠标滑过swiper暂停,swiper是没有直接的配置鼠标滑过暂停的,不过他提供了对应的暂停和启动的函数

所以实现滑过暂停的原理就是 监听鼠标事件 => 调用暂停或启动函数

methods: {
    on_stop() {
      this.$refs.myswiper.swiperInstance.autoplay.stop();
    },
    on_start() {
      this.$refs.myswiper.swiperInstance.autoplay.start();
    },
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值