import Vue from "vue";
import { Swipe, SwipeItem } from "vant";
Vue.use(Swipe);
Vue.use(SwipeItem);
每个 SwipeItem 代表一张轮播卡片,可以通过autoplay属性设置自动轮播的间隔
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
<style>
.my-swipe .van-swipe-item {
color: #fff;
font-size: 20px;
line-height: 150px;
text-align: center;
background-color: #39a9ed;
}
</style>
当 Swipe 中含有图片时,可以配合 Lazyload 组件实现图片懒加载
<van-swipe :autoplay="3000">
<van-swipe-item v-for="(image, index) in images" :key="index">
<img v-lazy="image" />
</van-swipe-item>
</van-swipe>
import Vue from "vue";
import { Lazyload } from "vant";
Vue.use(Lazyload);
export default {
data() {
return {
images: [
"https://img.yzcdn.cn/vant/apple-1.jpg",
"https://img.yzcdn.cn/vant/apple-2.jpg"
]
}
}
}
<van-swipe @change="onChange">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
import { Toast } from "vant";
export default {
methods: {
onChange(index) {
Toast("当前 Swipe 索引:" + index);
}
}
}
设置vertical属性后滑块会纵向排列,此时需要指定滑块容器的高度
<van-swipe style="height: 200px;" vertical>
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
滑块默认宽度为100%,可以通过width属性设置单个滑块的宽度。纵向滚动模式下,可以通过height属性设置单个滑块的高度。
<van-swipe :loop="false" :width="300">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
目前不支持在循环滚动模式下自定义滑块大小,因此需要将 loop 设置为 false
通过indicator插槽可以自定义指示器的样式
<van-swipe @change="onChange">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
<div class="custom-indicator" slot="indicator">
{{ current + 1 }}/4
</div>
</van-swipe>
export default {
data() {
return {
current: 0
}
},
methods: {
onChange(index) {
this.current = index;
}
}
}
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
autoplay | 自动轮播间隔,单位为 ms | number | string | - |
duration | 动画时长,单位为 ms | number | string | 500 |
initial-swipe | 初始位置索引值 | number | string | 0 |
width | 滑块宽度,单位为px | number | string | auto |
height | 滑块高度,单位为px | number | string | auto |
loop | 是否开启循环播放 | boolean | true |
show-indicators | 是否显示指示器 | boolean | true |
vertical | 是否为纵向滚动 | boolean | false |
touchable | 是否可以通过手势滑动 | boolean | true |
stop-propagation v2.2.13 | 是否阻止滑动事件冒泡 | boolean | true |
indicator-color | 指示器颜色 | string | #1989fa |
事件名 | 说明 | 回调参数 |
---|---|---|
change | 每一页轮播结束后触发 | index, 当前页的索引 |
事件名 | 说明 | 回调参数 |
---|---|---|
click | 点击时触发 | event: Event |
通过 ref 可以获取到 Swipe 实例并调用实例方法,详见 组件实例方法
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
prev v2.4.2 | 切换到上一轮播 | - | - |
next v2.4.2 | 切换到下一轮播 | - | - |
swipeTo | 切换到指定位置 | index: number, options: Options | void |
resize v2.2.14 | 外层元素大小变化后,可以调用此方法来触发重绘 | - | void |
名称 | 说明 | 类型 |
---|---|---|
immediate | 是否跳过动画 | boolean |
名称 | 说明 |
---|---|
default | 轮播内容 |
indicator | 自定义指示器 |
这种情况通常是由于项目中引入了fastclick库导致的。fastclick的原理是通过 Touch 事件模拟出 click 事件,而 Swipe 内部默认会阻止 touchmove 事件冒泡,干扰了 fastclick 的判断,导致出现这个问题。
将 Swipe 组件的 stop-propagation 属性设置为 false 即可避免该问题。
参见在桌面端使用。
用于标记和选择。基础用法由type属性来选择tag的类型,也可以通过color属性来自定义背景色。render() {return (divTag标签一/Tag...
通过基础的 24 分栏,迅速简便地创建布局。基础布局使用单一分栏创建基础的栅格布局。通过 Row 和 Col 组件,并通过 Col 组件的 ...
Dropdown 下拉菜单将动作或菜单折叠到下拉菜单中。基础用法移动到下拉菜单上,展开更多操作。通过组件slot来设置下拉触发的元素...
环境支持现代浏览器边缘最后 2 个版本最后 2 个版本最后 2 个版本由于 Vue3 不再支持 IE11,故而 ElementPlus 也不支持 IE11 及...
模态框(Modal)是覆盖在父窗体上的子窗体。通常,使用模态框的目的是用来显示来自一个单独的源的内容,而且可以在不离开父窗体...
ECharts自定义系列属性在上一节的内容中,我们初步认识了ECharts自定义系列,而本节的内容是介绍ECharts自定义系列属性。type在E...
Highcharts 环境配置 本章节我们将为大家介绍如何在网页中使用 Highcharts。 Highcharts 依赖于 jQuery,所以在加载 Highcharts ...
Highcharts 散点图 本章节我们将为大家介绍 Highcharts 的散点图。 我们在前面的章节已经了解了 Highcharts 配置语法。接下来让...