• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Swiper
2
3 滑块视图容器,提供子组件滑动轮播显示的能力。
4
5> **说明:**
6>
7> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 子组件
11
12可以包含子组件。
13
14>  **说明:**
15>
16>  子组件类型:系统组件和自定义组件,支持渲染控制类型([if/else](../../quick-start/arkts-rendering-control-ifelse.md)、[ForEach](../../quick-start/arkts-rendering-control-foreach.md)和[LazyForEach](../../quick-start/arkts-rendering-control-lazyforeach.md))。
17>
18>  Swiper子组件的visibility属性设置为None,Swiper的displayMode属性设置为SwiperDisplayMode.AutoLinear或displayCount属性设置为'auto'时,对应子组件在视窗内不占位,但不影响导航点个数。
19>
20>  Swiper子组件的visibility属性设置为None,或者visibility属性设置为Hidden时,对应子组件不显示,但依然会在视窗内占位。
21>
22>  当Swiper子组件个数小于等于Swiper组件内容区内显示的节点总个数(totalDisplayCount = DisplayCount + prevMargin? (1 : 0 ) + nextMargin? (1 : 0 ))时,按照非循环模式布局处理,此时,前后边距对应子组件不显示,但依然会在视窗内占位。Swiper组件按照totalDisplayCount个数判断测算规格。
23>
24>  当Swiper子组件设置了offset属性时,会按照子组件的层级进行绘制,层级高的子组件会覆盖层级低的子组件。例如,Swiper包含3个子组件,其中第3个子组件设置了offset({ x : 100 }),那么在横向循环滑动中,第3个子组件会覆盖第1个子组件,此时可设置第1个子组件的zIndex属性值大于第3个子组件,使第1个子组件层级高于第3个子组件。
25
26
27## 接口
28
29Swiper(controller?: SwiperController)
30
31**参数:**
32
33| 参数名        | 参数类型                                  | 必填   | 参数描述                 |
34| ---------- | ------------------------------------- | ---- | -------------------- |
35| controller | [SwiperController](#swipercontroller) | 否    | 给组件绑定一个控制器,用来控制组件翻页。 |
36
37
38## 属性
39
40除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性,不支持[Menu控制](ts-universal-attributes-menu.md)。
41
42| 名称                                    | 参数类型                                     | 描述                                       |
43| ------------------------------------- | ---------------------------------------- | ---------------------------------------- |
44| index                                 | number                                   | 设置当前在容器中显示的子组件的索引值。<br/>默认值:0<br/>**说明:** <br/>设置小于0或大于等于子组件数量时,按照默认值0处理。<br />从API version 10开始,该属性支持[$$](../../quick-start/arkts-two-way-sync.md)双向绑定变量。 |
45| autoPlay                              | boolean                                  | 子组件是否自动播放。<br/>默认值:false<br/>**说明:** <br/>loop为false时,自动轮播到最后一页时停止轮播。手势切换后不是最后一页时继续播放。 |
46| interval                              | number                                   | 使用自动播放时播放的时间间隔,单位为毫秒。<br/>默认值:3000       |
47| indicator                             | [DotIndicator](#dotindicator10)<sup>10+</sup>  \| [DigitIndicator](#digitindicator10)<sup>10+</sup>  \| boolean | 设置可选导航点指示器样式。<br/> \- DotIndicator:圆点指示器样式。<br/> \- DigitIndicator:数字指示器样式。<br/> \- boolean:是否启用导航点指示器。<br/>&nbsp;&nbsp;默认值:true<br/>&nbsp;&nbsp;默认类型:DotIndicator |
48| loop                                  | boolean                                  | 是否开启循环。<br>设置为true时表示开启循环,在LazyForEach懒循环加载模式下,加载的组件数量建议大于5个。<br/>默认值:true |
49| duration                              | number                                   | 子组件切换的动画时长,单位为毫秒。<br/>默认值:400            |
50| vertical                              | boolean                                  | 是否为纵向滑动。<br/>默认值:false                   |
51| itemSpace                             | number&nbsp;\|&nbsp;string               | 设置子组件与子组件之间间隙。<br/>默认值:0<br/>**说明:** <br/>不支持设置百分比。<br/>类型为number时,默认单位vp;类型为string时,需要显式指定像素单位,如'10px'。 |
52| displayMode                           | [SwiperDisplayMode](#swiperdisplaymode枚举说明) | 主轴方向上元素排列的模式,优先以displayCount设置的个数显示,displayCount未设置时本属性生效。<br/>默认值:SwiperDisplayMode.Stretch |
53| cachedCount<sup>8+</sup>              | number                                   | 设置预加载子组件个数。<br/>默认值:1 |
54| disableSwipe<sup>8+</sup>             | boolean                                  | 禁用组件滑动切换功能。<br/>默认值:false                |
55| curve<sup>8+</sup>                    | [Curve](ts-appendix-enums.md#curve)  \| string   \| [ICurve](../apis/js-apis-curve.md#icurve)<sup>10+</sup>| 设置Swiper的动画曲线,默认为线性曲线,常用曲线参考[Curve枚举说明](ts-appendix-enums.md#curve),也可以通过[插值计算](../apis/js-apis-curve.md)模块提供的接口创建自定义的插值曲线对象。<br/>默认值:Curve.Linear |
56| indicatorStyle<sup>(deprecated)</sup> | {<br/>left?:&nbsp;[Length](ts-types.md#length),<br/>top?:&nbsp;[Length](ts-types.md#length),<br/>right?:&nbsp;[Length](ts-types.md#length),<br/>bottom?:&nbsp;[Length](ts-types.md#length),<br/>size?:&nbsp;[Length](ts-types.md#length),<br/>mask?:&nbsp;boolean,<br/>color?:&nbsp;[ResourceColor](ts-types.md#resourcecolor),<br/>selectedColor?:&nbsp;[ResourceColor](ts-types.md#resourcecolor)<br/>} | 设置导航点样式:<br/>\- left: 设置导航点距离Swiper组件左边的距离。<br/>\- top: 设置导航点距离Swiper组件顶部的距离。<br/>\- right: 设置导航点距离Swiper组件右边的距离。<br/>\- bottom: 设置导航点距离Swiper组件底部的距离。<br/>\- size: 设置导航点的直径,不支持设置百分比。默认值:6vp。<br/>\- mask: 设置是否显示导航点蒙层样式。<br/>\- color: 设置导航点的颜色。<br/>\- selectedColor: 设置选中的导航点的颜色。 <br/>从API version 8开始支持,从API version 10开始不再维护,建议使用[indicator](#indicator10)代替。 |
57| displayCount<sup>8+</sup>   | number \| string \| <br />[SwiperAutoFill](#swiperautofill10)<sup>10+</sup> | 设置一页内元素显示个数。<br/>默认值:1<br/>**说明:** <br/>字符串类型仅支持设置为'auto',显示效果同SwiperDisplayMode.AutoLinear。<br/>使用number类型且设置小于等于0时,按默认值1显示。<br/>使用number类型时,子组件按照主轴均分Swiper宽度(减去displayCount-1个itemSpace)的方式进行主轴拉伸(收缩)布局。<br/> 使用SwiperAutoFill类型时,通过设置一个子组件最小宽度值minSize,会根据Swiper当前宽度和minSize值自动计算并更改一页内元素显示个数。当minSize为空或者小于等于0时,Swiper显示1列。 |
58| effectMode<sup>8+</sup>               | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 边缘滑动效果,loop = false时生效。 目前支持的滑动效果参见EdgeEffect的枚举说明。<br/>默认值:EdgeEffect.Spring<br/>**说明:** <br/>控制器接口调用时不生效回弹。 |
59| displayArrow<sup>10+</sup>            | value:[ArrowStyle](#arrowstyle10) \| boolean,<br/>isHoverShow?: boolean | 设置导航点箭头样式。<br/>-value: 支持设置箭头和底板样式,异常场景使用ArrowStyle对象中的默认值。<br/>\-isHoverShow:设置鼠标悬停时是否显示箭头。<br/>默认值:false<br/>**说明:**<br/>isHoverShow为false时,常驻显示箭头,支持点击翻页。<br/>isHoverShow为true时,只有在鼠标悬停时才会显示箭头,并支持点击翻页。 |
60| nextMargin<sup>10+</sup>    | <br/>[Length](ts-types.md#length)<br/> | 后边距,用于露出后一项的一小部分。<br/>默认值:0<br/>**说明:** <br/>仅当SwiperDisplayMode为STRETCH模式时生效。<br/>当主轴方向为横向布局时,nextmargin/prevmargin中任意一个大于子组件测算的宽度,nextmargin和prevmargin均不显示。<br/>当主轴方向为纵向布局时,nextmargin/prevmargin中任意一个大于子组件测算的高度,nextmargin和prevmargin均不显示。 |
61| prevMargin<sup>10+</sup>    | <br/>[Length](ts-types.md#length)<br/> | 前边距,用于露出前一项的一小部分。<br/>默认值:0<br/>**说明:** <br/>仅当SwiperDisplayMode为STRETCH模式时生效。<br/>当主轴方向为横向布局时,nextmargin/prevmargin中任意一个大于子组件测算的宽度,prevmargin和nextmargin均不显示。<br/>当主轴方向为纵向布局时,nextmargin/prevmargin中任意一个大于子组件测算的高度,nextmargin和prevmargin均不显示。 |
62
63## SwiperDisplayMode枚举说明
64
65| 名称                                | 描述                                       |
66| --------------------------------- | ---------------------------------------- |
67| Stretch<sup>(deprecated)</sup>    | Swiper滑动一页的宽度为Swiper组件自身的宽度。<br>从API version 10开始不再维护,建议使用STRETCH代替。 |
68| AutoLinear<sup>(deprecated)</sup> | Swiper滑动一页的宽度为子组件宽度中的最大值。<br>从API version 10开始不再维护,建议使用AUTO_LINEAR代替。 |
69| STRETCH<sup>10+</sup>             | Swiper滑动一页的宽度为Swiper组件自身的宽度。             |
70| AUTO_LINEAR<sup>10+</sup>         | Swiper滑动一页的宽度为视窗内最左侧子组件的宽度。              |
71
72## SwiperController
73
74Swiper容器组件的控制器,可以将此对象绑定至Swiper组件,可以通过它控制翻页。
75
76### 导入对象
77
78```ts
79let controller: SwiperController = new SwiperController()
80```
81
82### showNext
83
84showNext(): void
85
86翻至下一页。翻页带动效切换过程,时长通过duration指定。
87
88### showPrevious
89
90showPrevious(): void
91
92翻至上一页。翻页带动效切换过程,时长通过duration指定。
93
94### finishAnimation
95
96finishAnimation(callback?: () => void): void
97
98停止播放动画。
99
100**参数:**
101
102| 参数名      | 参数类型       | 必填项  | 参数描述     |
103| -------- | ---------- | ---- | -------- |
104| callback | () => void | 否    | 动画结束的回调。 |
105
106## Indicator<sup>10+</sup>
107
108设置导航点距离Swiper组件距离。
109
110| 参数名    | 参数类型                         | 必填项  | 参数描述                                     |
111| ------ | ---------------------------- | ---- | ---------------------------------------- |
112| left   | [Length](ts-types.md#length) | 否    | 设置导航点距离Swiper组件左边的距离。<br/>默认值:0<br/>单位:vp |
113| top    | [Length](ts-types.md#length) | 否    | 设置导航点距离Swiper组件顶部的距离。<br/>默认值:0<br/>单位:vp |
114| right  | [Length](ts-types.md#length) | 否    | 设置导航点距离Swiper组件右边的距离。<br/>默认值:0<br/>单位:vp |
115| bottom | [Length](ts-types.md#length) | 否    | 设置导航点距离Swiper组件底部的距离。<br/>默认值:0<br/>单位:vp |
116| static dot    |          无           | 否    | 返回一个DotIndicator对象。 |
117| static digit  |          无           | 否    | 返回一个DigitIndicator对象。 |
118
119## DotIndicator<sup>10+</sup>
120
121圆点指示器属性及功能继承自Indicator。
122
123| 参数名                | 参数类型                                     | 必填项  | 参数描述                                     |
124| ------------------ | ---------------------------------------- | ---- | ---------------------------------------- |
125| itemWidth          | [Length](ts-types.md#length)             | 否    | 设置Swiper组件圆点导航指示器的宽,不支持设置百分比。<br/>默认值:6<br/>单位:vp |
126| itemHeight         | [Length](ts-types.md#length)             | 否    | 设置Swiper组件圆点导航指示器的高,不支持设置百分比。<br/>默认值:6<br/>单位:vp |
127| selectedItemWidth  | [Length](ts-types.md#length)             | 否    | 设置选中Swiper组件圆点导航指示器的宽,不支持设置百分比。<br/>默认值:12<br/>单位:vp |
128| selectedItemHeight | [Length](ts-types.md#length)             | 否    | 设置选中Swiper组件圆点导航指示器的高,不支持设置百分比。<br/>默认值:6<br/>单位:vp |
129| mask               | boolean                                  | 否    | 设置是否显示Swiper组件圆点导航指示器的蒙版样式。<br/>默认值:false |
130| color              | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置Swiper组件圆点导航指示器的颜色。<br/>默认值:'\#182431'(10%透明度) |
131| selectedColor      | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置选中Swiper组件圆点导航指示器的颜色。<br/>默认值:'\#007DFF' |
132
133>**说明:**
134>
135>按压导航点时,导航点会放大至1.33倍显示,因此非按压态时导航点的可见范围边界至实际范围边界存在一定距离,该距离会随着itemWidth、itemHeight、selectedItemWidth、selectedItemHeight等参数变大而变大。
136
137## DigitIndicator<sup>10+</sup>
138
139数字指示器属性及功能继承自Indicator。
140
141| 参数名               | 参数类型                                     | 必填项  | 参数描述                                     |
142| ----------------- | ---------------------------------------- | ---- | ---------------------------------------- |
143| fontColor         | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置Swiper组件数字导航点的字体颜色。<br/>默认值:'\#ff182431' |
144| selectedFontColor | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置选中Swiper组件数字导航点的字体颜色。<br/>默认值:'\#ff182431' |
145| digitFont         | {<br/>size?:[Length](ts-types.md#length)<br/>weight?:number \| [FontWeight](ts-appendix-enums.md#fontweight) \| string<br/>} | 否    | 设置Swiper组件数字导航点的字体样式:<br/>\- size:数字导航点指示器的字体大小,不支持设置百分比。<br/>默认值:14vp<br/>\- weight:数字导航点指示器的字重。 |
146| selectedDigitFont | {<br/>size?:[Length](ts-types.md#length)<br/>weight?:number \| [FontWeight](ts-appendix-enums.md#fontweight) \| string<br/>} | 否    | 设置选中Swiper组件数字导航点的字体样式:<br/>\- size:数字导航点选中指示器的字体大小,不支持设置百分比。<br/>默认值:14vp<br/>\- weight:数字导航点选中指示器的字重。 |
147
148## ArrowStyle<sup>10+</sup>
149左右箭头属性。
150
151| 参数名              | 参数类型                                     | 必填项  | 参数描述                                     |
152| ---------------- | ---------------------------------------- | ---- | ---------------------------------------- |
153| showBackground   | boolean                                  | 否    | 设置箭头底板是否显示。<br/>默认值:false                |
154| isSidebarMiddle  | boolean                                  | 否    | 设置箭头显示位置。<br/>默认值:false <br/>默认显示在导航点指示器两侧。 |
155| backgroundSize   | [Length](ts-types.md#length)             | 否    | 设置底板大小。<br/>在导航点两侧显示:<br/>默认值:24vp<br/>在组件两侧显示:<br/>默认值:32vp<br/>不支持设置百分比。 |
156| backgroundColor  | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置底板颜色。<br/>在导航点两侧显示:<br/>默认值:'\#00000000'<br/>在组件两侧显示:<br/>默认值:'\#19182431' |
157| arrowSize        | [Length](ts-types.md#length)             | 否    | 设置箭头大小。<br/>在导航点两侧显示时:<br/>默认值:18vp<br/>在组件两侧显示时:<br/>默认值:24vp<br/>**说明:**<br/>showBackground为true时,arrowSize为backgroundSize的3/4。<br/>不支持设置百分比。 |
158| arrowColor       | [ResourceColor](ts-types.md#resourcecolor) | 否    | 设置箭头颜色。<br/>默认值:'\#182431'                 |
159
160## SwiperAutoFill<sup>10+</sup>
161
162自适应属性。
163
164| 参数名  | 参数类型             | 必填项 | 参数描述                             |
165| ------- | -------------------- | ------ | ------------------------------------ |
166| minSize | [VP](ts-types.md#vp10) | 是     | 设置元素显示最小宽度。<br/>默认值:0 |
167
168## 事件
169
170除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
171
172| 名称                                       | 功能描述                                     |
173| ---------------------------------------- | ---------------------------------------- |
174| onChange(event: (index: number) => void) | 当前显示的子组件索引变化时触发该事件,返回值为当前显示的子组件的索引值。<br/>-&nbsp;index:当前显示元素的索引。<br/>**说明:** <br>Swiper组件结合LazyForEach使用时,不能在onChange事件里触发子页面UI的刷新。 |
175| onAnimationStart<sup>9+</sup>(event: (index: number, targetIndex<sup>10+</sup>: number, extraInfo<sup>10+</sup>: [SwiperAnimationEvent](ts-types.md#swiperanimationevent10)) => void) | 切换动画开始时触发该回调。<br/>-&nbsp;index:当前显示元素的索引。<br/>-&nbsp;targetIndex:切换动画目标元素的索引。<br/>-&nbsp;extraInfo:动画相关信息,包括主轴方向上当前显示元素和目标元素相对Swiper起始位置的位移,以及离手速度。<br/>**说明:** <br/>参数为动画开始前的index值(不是最终结束动画的index值),多列Swiper时,index为最左侧组件的索引。 |
176| onAnimationEnd<sup>9+</sup>(event: (index: number, extraInfo: [SwiperAnimationEvent](ts-types.md#swiperanimationevent10)) => void) | 切换动画结束时触发该回调。<br/>-&nbsp;index:当前显示元素的索引。<br/>-&nbsp;extraInfo:动画相关信息,只返回主轴方向上当前显示元素相对于Swiper起始位置的位移。<br/>**说明:** <br/>当Swiper切换动效结束时触发,包括动画过程中手势中断,通过SwiperController调用finishAnimation。参数为动画结束后的index值,多列Swiper时,index为最左侧组件的索引。 |
177| onGestureSwipe<sup>10+</sup>(event: (index: number, extraInfo: [SwiperAnimationEvent](ts-types.md#swiperanimationevent10)) => void) | 在页面跟手滑动过程中,逐帧触发该回调。<br/>-&nbsp;index:当前显示元素的索引。<br/>-&nbsp;extraInfo:动画相关信息,只返回主轴方向上当前显示元素相对于Swiper起始位置的位移。<br/>**说明:** <br/>多列Swiper时,index为最左侧组件的索引。 |
178
179## 示例
180
181### 示例1
182```ts
183// xxx.ets
184class MyDataSource implements IDataSource {
185  private list: number[] = []
186
187  constructor(list: number[]) {
188    this.list = list
189  }
190
191  totalCount(): number {
192    return this.list.length
193  }
194
195  getData(index: number): number {
196    return this.list[index]
197  }
198
199  registerDataChangeListener(listener: DataChangeListener): void {
200  }
201
202  unregisterDataChangeListener() {
203  }
204}
205
206@Entry
207@Component
208struct SwiperExample {
209  private swiperController: SwiperController = new SwiperController()
210  private data: MyDataSource = new MyDataSource([])
211
212  aboutToAppear(): void {
213    let list: number[] = []
214    for (let i = 1; i <= 10; i++) {
215      list.push(i);
216    }
217    this.data = new MyDataSource(list)
218  }
219
220  build() {
221    Column({ space: 5 }) {
222      Swiper(this.swiperController) {
223        LazyForEach(this.data, (item: string) => {
224          Text(item.toString())
225            .width('90%')
226            .height(160)
227            .backgroundColor(0xAFEEEE)
228            .textAlign(TextAlign.Center)
229            .fontSize(30)
230        }, (item: string) => item)
231      }
232      .cachedCount(2)
233      .index(1)
234      .autoPlay(true)
235      .interval(4000)
236      .loop(true)
237      .duration(1000)
238      .itemSpace(0)
239      .indicator( // 设置圆点导航点样式
240        new DotIndicator()
241          .itemWidth(15)
242          .itemHeight(15)
243          .selectedItemWidth(15)
244          .selectedItemHeight(15)
245          .color(Color.Gray)
246          .selectedColor(Color.Blue))
247      .displayArrow({ // 设置导航点箭头样式
248        showBackground: true,
249        isSidebarMiddle: true,
250        backgroundSize: 24,
251        backgroundColor: Color.White,
252        arrowSize: 18,
253        arrowColor: Color.Blue
254      }, false)
255      .curve(Curve.Linear)
256      .onChange((index: number) => {
257        console.info(index.toString())
258      })
259      .onGestureSwipe((index: number, extraInfo: SwiperAnimationEvent) => {
260        console.info("index: " + index)
261        console.info("current offset: " + extraInfo.currentOffset)
262      })
263      .onAnimationStart((index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => {
264        console.info("index: " + index)
265        console.info("targetIndex: " + targetIndex)
266        console.info("current offset: " + extraInfo.currentOffset)
267        console.info("target offset: " + extraInfo.targetOffset)
268        console.info("velocity: " + extraInfo.velocity)
269      })
270      .onAnimationEnd((index: number, extraInfo: SwiperAnimationEvent) => {
271        console.info("index: " + index)
272        console.info("current offset: " + extraInfo.currentOffset)
273      })
274
275      Row({ space: 12 }) {
276        Button('showNext')
277          .onClick(() => {
278            this.swiperController.showNext()
279          })
280        Button('showPrevious')
281          .onClick(() => {
282            this.swiperController.showPrevious()
283          })
284      }.margin(5)
285    }.width('100%')
286    .margin({ top: 5 })
287  }
288}
289```
290
291![swiper](figures/swiper.gif)
292
293### 示例2
294```ts
295// xxx.ets
296class MyDataSource implements IDataSource {
297  private list: number[] = []
298
299  constructor(list: number[]) {
300    this.list = list
301  }
302
303  totalCount(): number {
304    return this.list.length
305  }
306
307  getData(index: number): number {
308    return this.list[index]
309  }
310
311  registerDataChangeListener(listener: DataChangeListener): void {
312  }
313
314  unregisterDataChangeListener() {
315  }
316}
317
318@Entry
319@Component
320struct SwiperExample {
321  private swiperController: SwiperController = new SwiperController()
322  private data: MyDataSource = new MyDataSource([])
323
324  aboutToAppear(): void {
325    let list: number[] = []
326    for (let i = 1; i <= 10; i++) {
327      list.push(i);
328    }
329    this.data = new MyDataSource(list)
330  }
331
332  build() {
333    Column({ space: 5 }) {
334      Swiper(this.swiperController) {
335        LazyForEach(this.data, (item: string) => {
336          Text(item.toString())
337            .width('90%')
338            .height(160)
339            .backgroundColor(0xAFEEEE)
340            .textAlign(TextAlign.Center)
341            .fontSize(30)
342        }, (item: string) => item)
343      }
344      .cachedCount(2)
345      .index(1)
346      .autoPlay(true)
347      .interval(4000)
348      .indicator(Indicator.digit() // 设置数字导航点样式
349        .right("43%")
350        .top(200)
351        .fontColor(Color.Gray)
352        .selectedFontColor(Color.Gray)
353        .digitFont({ size: 20, weight: FontWeight.Bold })
354        .selectedDigitFont({ size: 20, weight: FontWeight.Normal }))
355      .loop(true)
356      .duration(1000)
357      .itemSpace(0)
358      .displayArrow(true, false)
359
360      Row({ space: 12 }) {
361        Button('showNext')
362          .onClick(() => {
363            this.swiperController.showNext()
364          })
365        Button('showPrevious')
366          .onClick(() => {
367            this.swiperController.showPrevious()
368          })
369      }.margin(5)
370    }.width('100%')
371    .margin({ top: 5 })
372  }
373}
374```
375![swiper](figures/swiper-digit.gif)