Skip to content

自动播放

自动播放指的是轮播图组件能够在不需要用户操作的情况下,自动切换到下一个幻灯片。

TIP

不要与无限循环 loop 混淆。

引入

WARNING

v3版本不再默认引入所有modules,这意味着在使用modules中的模块时,都需要手动引入。

同时部分modulescss也需手动引入。需要注意的是,将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>

Released under the MIT License.