自动播放
自动播放指的是轮播图组件能够在不需要用户操作的情况下,自动切换到下一个幻灯片。
TIP
不要与无限循环 loop
混淆。
引入
WARNING
v3版本不再默认引入所有modules
,这意味着在使用modules中的模块时,都需要手动引入。
同时部分modules
的css
也需手动引入。需要注意的是,将style
设置为scoped
会导致样式失效。推荐全局引入所需要的模块样式。参考:引入样式
具体可查看模块化按需引入
vue
<script lang="ts" setup>
import { Autoplay } from '@zebra-ui/swiper/modules'
const modules = ref([Autoplay])
</script>
vue
<script lang="ts" setup>
import { Autoplay } from '@/uni_modules/zebra-swiper/modules'
const modules = ref([Autoplay])
</script>
配置
autoplay
设置为true
开启自动播放。
类型
Boolean,Object
默认值
false
delay
自动播放的时间间隔,单位(ms)
类型
number
默认值
3000
disableOnInteraction
用户操作后是否禁用自动播放
TIP
2.x版本中,该配置的默认值为true
。3.x中更改为false
。
类型
boolean
默认值
false
pauseOnMouseEnter only web
鼠标悬停时是否暂停自动播放
类型
boolean
默认值
false
reverseDirection
是否开启反向自动播放
类型
boolean
默认值
false
stopOnLastSlide
是否在最后一页停止自动播放(在循环模式下无效)
类型
boolean
默认值
false
waitForTransition
当swiper处于动画状态中时,是否等待过渡完成后再开始自动播放计时
类型
boolean
默认值
true
属性
paused & running & timeLeft
- paused:自动播放是否处于暂停状态
- running:autoplay是否处于运行状态
- timeLeft:暂停状态下切换的剩余时间
方法
pause
暂停自动播放
resume
将自动播放从暂停的状态中恢复至播放状态
start
开始自动播放
vue
<DemoOprate
type="primary"
@click="() => swiperInstance['start'].autoplay.start()"
>开始自动播放</DemoOprate>
stop
停止自动播放
vue
<DemoOprate
type="primary"
@click="() => swiperInstance['stop'].autoplay.stop()"
>停止自动播放</DemoOprate>
事件
autoplay
自动播放发生变化时触发
html
<z-swiper @autoplay="onSwiperAutoplay">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplay = (swiper) => {
console.log('swiper实例:', swiper)
}
</script>
autoplayPause
暂停时触发
html
<z-swiper @autoplayPause="onSwiperAutoplayPause">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplayPause = (swiper) => {
console.log('swiper实例:', swiper)
}
</script>
autoplayResume
恢复时触发
html
<z-swiper @autoplayResume="onSwiperAutoplayResume">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplayResume = (swiper) => {
console.log('swiper实例:', swiper)
}
</script>
autoplayStart
开始时触发
html
<z-swiper @autoplayStart="onSwiperAutoplayStart">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplayStart = (swiper) => {
console.log('swiper实例:', swiper)
}
</script>
autoplayStop
停止时触发
html
<z-swiper @autoplayStop="onSwiperAutoplayStop">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplayStop = (swiper) => {
console.log('swiper实例:', swiper)
}
</script>
autoplayTimeLeft
启用自动播放后,事件会持续触发。它包含转换到下一张幻灯片之前的剩余时间(以毫秒为单位)以及与自动播放延迟相关的时间百分比
html
<z-swiper @autoplayTimeLeft="onSwiperAutoplayTimeLeft">
<z-swiper-item v-for="item in list" :key="item.id">
<DemoItem :text="item.text"></DemoItem>
</z-swiper-item>
</z-swiper>
vue
<script setup>
const onSwiperAutoplayTimeLeft = (swiper, timeLeft, percentage) => {
console.log('swiper实例:', swiper, timeLeft, percentage)
}
</script>