Swiper 轮播图

此组件一般用于导航轮播,广告展示等场景,如下特点:
- 自定义指示器模式,可配置指示器样式,可以控制指示器是否显示,以及位置
- 3D 轮播图效果,满足不同的开发场景
- 可配置显示标题,覆盖不能的应用场景
- 具有设置加载状态和嵌入视频的能力
平台差异说明
| APP | H5 | 微信小程序 | 支付宝小程序 | QQ小程序 | ··· |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | 适配中 |
代码示例
部分功能示例,具体可参考示例程序以及文档API。
基础用法
通过 list 属性传入轮播图列表值,此值为一个数组,元素为对象,如下:
list的image属性为轮播图的图片路径list的title属性为需要显示的标题
说明:特殊情况下
- 您从服务器获取的数据,里面的数组对于图片的属性名不一定为
image,如果让您再遍历修改为image属性,显然是不合理的,所以 fusions-ui 提供了一个keyName属性,比如您数组中的图片属性名为img,您可以通过fu-swiper组件的keyName属性设置为img值。 - 您也可以直接传递一个元素图片的路径的数组给
list属性
html
<template>
<fu-swiper :list="list" keyName="img" @change="handleChange" @click="handleClick"></fu-swiper>
</template>
<script setup>
import { reactive } from 'vue';
// data数据
// const list = reactive([
// '1.jpg',
// '2.jpg',
// '3.jpg'
// ]);
const list = reactive([
{
img: '1.jpg',
title: '标题1'
},
{
img: '2.jpg',
title: '标题2'
},
{
img: '3.jpg',
title: '标题3'
}
]);
</script>指示器模式
此组件内置了多种指示器,通过设置 mode 属性即可,可选值:
rect指示器为方块状round激活的指示器为块状,未激活的未点状,为默认值dot指示器为圆点number指示器为数字
通过 indicatorPosition 属性设置指示器的位置,有如下值:
topLeft指示器位于左上角topCenter指示器位于上方中间位置topRight指示器位于右上角bottomLeft指示器位于左下角bottomCenter指示器位于底部中间位置,为默认值bottomRight指示器位于右下角
html
<fu-swiper :list="list" mode="dot" indicatorPosition="bottomRight"></fu-swiper>设置加载中
通过 loading 属性设置加载中的状态,例如:
您可以动态的来控制加载状态,比如::loading="loading"
html
<fu-swiper :list="list" loading></fu-swiper>设置嵌入视频
在一些场景下,需要嵌入视频,我们提供了嵌入视频的能力,为了避免浪费资源,在您切换轮播的时候视频会停止播放,您可以设置 poster 指定视频封面,示例:
html
<template>
<fu-swiper :list="list" keyName="url" :autoplay="false"></fu-swiper>
</template>
<script setup>
import { reactive } from 'vue';
// data数据
const list = reactive([
{
url: "",
title: "",
poster: ""
},
{
url: "",
title: ""
},
{
url: "",
title: ""
}
]);
</script>设置指定类型
默认情况下会根据链接字段判断 swiper-item 类型,但在极端情况下可能会不准确,所以我们提供了指定 item 的类型,通过设置 type 为 video 或 image 来指定类型即可,示例:
html
<template>
<fu-swiper :list="list" keyName="url" :autoplay="false"></fu-swiper>
</template>
<script setup>
import { reactive } from 'vue';
// data数据
const list = reactive([
{
url: "",
title: "",
poster: "",
type: "video"
},
{
url: "",
title: "",
type: "image"
},
{
url: "",
title: ""
}
]);
</script>设置开启 3D 效果
设置 effect3D 为 true 即可,此效果左右两边可以缩略形式预览前后一个 swiper-item 的一部分,效果更加生动。
html
<fu-swiper :list="list" :effect3D="true"></fu-swiper>控制轮播图效果
autoplay属性控制是否自动轮播,默认为trueinterval属性控制轮播间隔时间,单位为ms,默认为3000duration属性控制动画时长,单位为ms,默认为500circular属性控制是否循环播放,默认为true
html
<fu-swiper :list="list" :autoplay="false" interval="2000" duration="3000" :circular="false"></fu-swiper>API
Swiper Props
| 属性名 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| list | 轮播图数据,详见上方基础用法 | Array | - | - |
| radius | 轮播图圆角 | String|Number | 5 | - |
| current | 当前轮播图索引,默认显示第几项 | Number | 0 | - |
| height | 轮播图高度,单位为 px | String|Number | 125 | - |
| bgColor | 轮播图背景颜色 | String | transparent | - |
| keyName | 图片的属性名 | String | image | - |
| showTitle | 是否显示标题 | Boolean | false | - |
| keyTitle | 标题的属性名 | String | title | - |
| titleStyle | 标题样式 | Object | - | - |
| mode | 指示器模式,详见上方指示器模式 | String | round | - |
| indicator | 是否显示指示灯 | Boolean | false | - |
| indicatorPosition | 指示器位置,详见上方指示器模式 | String | bottomCenter | - |
| effect3D | 是否开启 3D 效果 | Boolean | false | - |
| effect3DPreviousSpacing | 在3D缩放模式下,item之间的间隔 | String|Number | 25 | - |
| autoplay | 是否自动轮播 | Boolean | true | - |
| interval | 轮播间隔时间 | Number | 3000 | - |
| duration | 动画时长 | Number | 500 | - |
| circular | 是否循环播放 | Boolean | true | - |
| imgMode | 图片裁剪模式 | String | aspectFill | - |
Swiper Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| click | 点击轮播图时触发 | () => void |
| change | 轮播图切换时触发 | () => void |
Swiper Slot
| 名称 | 说明 |
|---|---|
| indicator | 自定义指示器 |