vue3使用Swiper8实现自定义轮播效果

本文介绍了如何在Vue3中使用Swiper8库实现一个自定义轮播组件,包括左侧视频轮播和右侧标题栏的实现。通过使用Swiper的slideTo方法和组件方法,实现了平滑的切换效果。文章还提供了具体实现的代码示例,以及对比了使用Swiper与手动实现的优缺点,并分享了解决loop模式下视频错位的bug。

偶然发现一个网站页面轮播图样式很好看,就尝试伪实现和使用swiper实现它

 左侧是视频,使用的是video标签,也是swiper垂直轮播的实例

右侧是标题栏,功能效果等效于swiper的分页器Pagination的小圆点

前言

起初,我在思考它是怎么将小圆点的样式给改写成这样的!然而后来才发现,只不过是使用swiper的slideTo方法罢了。这里不禁要感叹一下,为啥这么多人分享vue3如何使用swiper8,却很少有人分享如何使用swiper中的methods,幸好我找到一篇才能完美实现上述的功能需求!

swiper8中文官网vue实例demo        Swiper Demos

swiper8中文官网api文档        mySwiper.slideTo(index, speed, runCallbacks)_Swiper参数选项

Swiper API

感谢这篇文章的解惑        Vue3 初始化swiper以及如何使用swiper的方法与事件  

具体实现

1.使用swiper实现        swiper.vue

<template>
    <div class="swiper-box">
        <swiper :direction="'vertical'" :pagination="{ clickable: true, }" :modules="modules" :autoplay="{ delay: 10000, disableOnInteraction: false }"
            :loop="true" class="mySwiper l-box" @swiper="setControlledSwiper" @slideChange="onSlideChange" ref="mySwiper">
            <swiper-slide v-for="(i, index) in ctnList" style="width: 800px;height:450px;position: relative;">
                <!-- disablePictureInPicture -->
                <video class="video" x5-video-player-type="h5" x-webkit-airplay="true" webkit-playsinline="true" loop
                    autoplay muted controls data-attr="画中画" :id="'video'+index">
                    <source :src="i" type="video/mp4">
                </video>
                <!-- 画中画按钮 -->
                <el-tooltip content="开启画中画">
                    <el-icon class="icon-picture" @click="openPictureI
### 创建基于 Vue2 和 Swiper5 的轮播图组件 为了在 Vue2 中集成并使用 Swiper5 来创建一个功能齐全的轮搏图组件,可以遵循如下方法: #### 安装依赖包 首先,在命令行工具中执行 npm 或 yarn 命令来安装所需的 swiper 库及其样式文件。 ```bash npm install swiper@5 --save ``` 或者如果偏好使用 Yarn: ```bash yarn add swiper@5 ``` #### 导入 Swiper 组件及相关模块 接着,在项目的入口文件 `main.js` 中导入必要的 Swiper CSS 文件以及核心 JavaScript 功能。这一步骤对于确保 Swiper 正常工作至关重要[^1]。 ```javascript // main.js import &#39;swiper/swiper-bundle.css&#39;; import { Swiper, Navigation, Pagination } from &#39;swiper/dist/js/swiper.esm&#39;; Swiper.use([Navigation, Pagination]); ``` #### 构建自定义轮播组件 随后,创建一个新的 Vue 单文件组件 (SFC),命名为 `MySwiper.vue` 并编写模板结构与逻辑脚本部分。这里展示了如何配置基本参数以适应不同场景需求。 ```html <template> <div class="my-swiper"> <!-- 轮播容器 --> <swiper :options="swiperOption" ref="mySwiper"> <swiper-slide v-for="(slide, index) in slides" :key="index"> {{ slide }} </swiper-slide> <!-- 分页器 --> <div class="swiper-pagination" slot="pagination"></div> <!-- 左右箭头按钮 --> <div class="swiper-button-prev" slot="button-prev"></div> <div class="swiper-button-next" slot="button-next"></div> </swiper> </div> </template> <script> export default { name: "MySwiper", data() { return { slides: ["Slide 1", "Slide 2", "Slide 3"], // 示例幻灯片数据 swiperOption: { loop: true, pagination: { el: ".swiper-pagination" }, navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev" } } }; } }; </script> <style scoped lang="scss"> .my-swiper { width: 100%; height: 300px; } </style> ``` 通过上述代码片段中的设置,已经成功集成了 Swiper5 到 Vue2 项目当中,并实现了基础版带有分页指示器和方向控制键的轮播效果[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高中不复,大学纷飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值