vue3实现轮播图
效果图:
swiper官网:swiper.js.cn/element
步骤:
1. npm安装swiper
npm install swiper
2. 注册和引入
// import function to register Swiper custom elements
import { register } from 'swiper/element/bundle';
// register Swiper custom elements
register();
3. 用法
demo
<template>
<swiper-container
ref="swiper"
class="scroll_nav"
:space-between="spaceBetween"
:centered-slides="true"
:pagenation="true"
>
<swiper-slide class="swiper_box" >
<div class="box">这是页面一</div>
</swiper-slide>
<swiper-slide class="swiper_box" >
<div class="box">这是页面二</div>
</swiper-slide>
<swiper-slide class="swiper_box" >
<div class="box">这是页面三</div>
</swiper-slide>
</swiper-container>
</template>
<script setup>
import {ref} from 'vue'
// 引入swiper
import { register } from 'swiper/element/bundle'
register()
// 翻页
const spaceBetween = 10
const onProgress = (e) => {
const [swiper, progress] = e.detail
console.log(progress)
}
const onSlideChange = (e) => {
console.log('slide changed')
}
let swiper = ref(null)
</script>
<style lang="scss" scoped>
.scroll_nav{
width: 375px;
height: 200px;
display: flex;
align-items: center;
justify-content: center;
.swiper_box{
width: 327px;
display: flex;
align-items: center;
justify-content: center;
.box{
width: 200px;
height: 100px;
border-radius: 10px;
background-color: aquamarine;
}
}
}
</style>
参数
<swiper-container>- 定义所有参数的主要 Swiper 元素<swiper-slide>- Swiper 幻灯片元素init="false"属性以防止 Swiper 初始化swiper已初始化的 Swiper 实例可作为 Swiper 的HTMLElement的swiper属性使用navigation="true"分页pagination="true"导航scrollbar="true"滚动条lazy="true"懒加载thumbs.swiper缩略图
事件
所有 Swiper 事件 都可用作原生 DOM 事件但名称小写且带有 swiper 前缀(可通过 events-prefix 参数配置)。例如,slideChange 变成 swiperslidechange。
所有事件处理程序参数都作为数组传递到 event.detail 中
<swiper-container>
<swiper-slide>Slide 1</swiper-slide>
<swiper-slide>Slide 2</swiper-slide>
<swiper-slide>Slide 3</swiper-slide>
...
</swiper-container>
<script>
const swiperEl = document.querySelector('swiper-container');
swiperEl.addEventListener('swiperprogress', (event) => {
const [swiper, progress] = event.detail;
});
swiperEl.addEventListener('swiperslidechange', (event) => {
console.log('slide changed');
});
</script>
插槽
默认情况下,所有 swiper-container 子项都作为 .swiper-wrapper 元素的子项呈现。如果你需要在之前或之后添加元素,则有两个可用的插槽
container-start- 将在.swiper-wrapper之前呈现container-end- 将在.swiper-wrapper之后呈现
<swiper-container>
<div slot="container-start">Rendered before wrapper</div>
<div slot="container-end">Rendered after wrapper</div>
<swiper-slide>Slide 1</swiper-slide>
<swiper-slide>Slide 2</swiper-slide>
<swiper-slide>Slide 3</swiper-slide>
...
</swiper-container>
常用css样式
-
container-<div class="swiper">的样式 -
wrapper-<div class="swiper-wrapper">的样式 -
button-prev- 上一个导航按钮<div class="swiper-button-prev">的样式 -
button-next- 下一个导航按钮<div class="swiper-button-next">的样式 -
pagination- 上一个分页容器<div class="swiper-pagination">的样式bullet- 分页项目元素的样式bullet-active- 活动分页项目元素的样式
-
scrollbar- - 滚动条容器<div class="swiper-scrollbar">的样式`