/*! For license information please see 6386.5a6bfe61.js.LICENSE.txt */ (self.webpackChunk=self.webpackChunk||[]).push([["6386"],{48176:function(s,n,a){"use strict";a.r(n);var t=a("80681");let e=["innerHTML"];n.default={setup:()=>({html:""}),render:()=>((0,t.wg)(),(0,t.iD)("div",{class:"van-doc-markdown-body",innerHTML:'
Used to loop a group of pictures or content.
\nRegister component globally via app.use
, refer to Component Registration for more registration ways.
import { createApp } from 'vue';\nimport { Swipe, SwipeItem } from 'vant';\n\nconst app = createApp();\napp.use(Swipe);\napp.use(SwipeItem);\n
\nUse autoplay
prop to set autoplay interval.
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">\n <van-swipe-item>1</van-swipe-item>\n <van-swipe-item>2</van-swipe-item>\n <van-swipe-item>3</van-swipe-item>\n <van-swipe-item>4</van-swipe-item>\n</van-swipe>\n\n<style>\n .my-swipe .van-swipe-item {\n color: #fff;\n font-size: 20px;\n line-height: 150px;\n text-align: center;\n background-color: #39a9ed;\n }\n</style>\n
\nUse lazy-render
prop to enable lazy rendering.
<van-swipe :autoplay="3000" lazy-render>\n <van-swipe-item v-for="image in images" :key="image">\n <img :src="image" />\n </van-swipe-item>\n</van-swipe>\n
\nexport default {\n setup() {\n const images = [\n 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg',\n 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg',\n ];\n return { images };\n },\n};\n
\n<van-swipe @change="onChange">\n <van-swipe-item>1</van-swipe-item>\n <van-swipe-item>2</van-swipe-item>\n <van-swipe-item>3</van-swipe-item>\n <van-swipe-item>4</van-swipe-item>\n</van-swipe>\n
\nimport { showToast } from 'vant';\n\nexport default {\n setup() {\n const onChange = (index) => showToast('Current Swipe index:' + index);\n return { onChange };\n },\n};\n
\n<van-swipe :autoplay="3000" vertical>\n <van-swipe-item>1</van-swipe-item>\n <van-swipe-item>2</van-swipe-item>\n <van-swipe-item>3</van-swipe-item>\n <van-swipe-item>4</van-swipe-item>\n</van-swipe>\n
\n<van-swipe :loop="false" :width="300">\n <van-swipe-item>1</van-swipe-item>\n <van-swipe-item>2</van-swipe-item>\n <van-swipe-item>3</van-swipe-item>\n <van-swipe-item>4</van-swipe-item>\n</van-swipe>\n
\n\n\nIt\'s not supported to set SwipeItem size in the loop mode.
\n
<van-swipe>\n <van-swipe-item>1</van-swipe-item>\n <van-swipe-item>2</van-swipe-item>\n <van-swipe-item>3</van-swipe-item>\n <van-swipe-item>4</van-swipe-item>\n <template #indicator="{ active, total }">\n <div class="custom-indicator">{{ active + 1 }}/{{ total }}</div>\n </template>\n</van-swipe>\n\n<style>\n .custom-indicator {\n position: absolute;\n right: 5px;\n bottom: 5px;\n padding: 2px 5px;\n font-size: 12px;\n background: rgba(0, 0, 0, 0.1);\n }\n</style>\n
\nAttribute | \nDescription | \nType | \nDefault | \n
---|---|---|---|
autoplay | \nAutoplay interval (ms) | \nnumber | string | \n- | \n
duration | \nAnimation duration (ms) | \nnumber | string | \n500 | \n
initial-swipe | \nIndex of initial swipe, start from 0 | \nnumber | string | \n0 | \n
width | \nWidth of swipe item | \nnumber | string | \n0 | \n
height | \nHeight of swipe item | \nnumber | string | \n0 | \n
loop | \nWhether to enable loop | \nboolean | \ntrue | \n
show-indicators | \nWhether to show indicators | \nboolean | \ntrue | \n
vertical | \nWhether to be vertical Scrolling | \nboolean | \nfalse | \n
touchable | \nWhether to allow swipe by touch gesture | \nboolean | \ntrue | \n
stop-propagation | \nWhether to stop touchmove event propagation | \nboolean | \nfalse | \n
lazy-render | \nWhether to enable lazy render | \nboolean | \nfalse | \n
indicator-color | \nIndicator color | \nstring | \n#1989fa | \n
Event | \nDescription | \nArguments | \n
---|---|---|
change | \nEmitted when current swipe changed | \nindex: number | \n
drag-start v4.0.9 | \nEmitted when user starts dragging the swipe | \n{ index: number } | \n
drag-end v4.0.9 | \nEmitted when user ends dragging the swipe | \n{ index: number } | \n
Event | \nDescription | \nArguments | \n
---|---|---|
click | \nEmitted when component is clicked | \nevent: MouseEvent | \n
Use ref to get Swipe instance and call instance methods..
\nName | \nDescription | \nAttribute | \nReturn value | \n
---|---|---|---|
prev | \nSwipe to prev item | \n- | \n- | \n
next | \nSwipe to next item | \n- | \n- | \n
swipeTo | \nSwipe to target index | \nindex: number, options: SwipeToOptions | \n- | \n
resize | \nResize Swipe when container element resized or visibility changed | \n- | \n- | \n
The component exports the following type definitions:
\nimport type { SwipeProps, SwipeInstance, SwipeToOptions } from 'vant';\n
\nSwipeInstance
is the type of component instance:
import { ref } from 'vue';\nimport type { SwipeInstance } from 'vant';\n\nconst swipeRef = ref<SwipeInstance>();\n\nswipeRef.value?.next();\n
\nName | \nDescription | \nType | \n
---|---|---|
immediate | \nWhether to skip animation | \nboolean | \n
Name | \nDescription | \nSlotProps | \n
---|---|---|
default | \nContent | \n- | \n
indicator | \nCustom indicator | \n{ active: number, total: number } | \n
The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.
\nName | \nDefault Value | \nDescription | \n
---|---|---|
--van-swipe-indicator-size | \n6px | \n- | \n
--van-swipe-indicator-margin | \nvar(--van-padding-sm) | \n- | \n
--van-swipe-indicator-active-opacity | \n1 | \n- | \n
--van-swipe-indicator-inactive-opacity | \n0.3 | \n- | \n
--van-swipe-indicator-active-background | \nvar(--van-primary-color) | \n- | \n
--van-swipe-indicator-inactive-background | \nvar(--van-border-color) | \n- | \n