4.2 swipe
这是滚动窗口控件。
滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。
这个控件有非常多的属性:
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
indicator-dots | boolean | false | 否 | 是否显示面板指示点 | 1.0.0 |
indicator-color | color | rgba(0,0,0,.3) | 否 | 指示点颜色 | 1.1.0 |
indicator-active-color | color | #000000 | 否 | 当前选中的指示点颜色 | 1.1.0 |
autoplay | boolean | false | 否 | 是否自动切换 | 1.0.0 |
current | number | 0 | 否 | 当前所在滑块的index | 1.0.0 |
interval | number | 5000 | 否 | 自动切换时间间隔 | 1.0.0 |
duration | number | 500 | 否 | 滑动动画时长 | 1.0.0 |
circular | boolean | false | 否 | 是否采用衔接滑动 | 1.0.0 |
vertical | boolean | false | 否 | 滑动方向是否为纵向 | 1.0.0 |
previous-margin | string | "0px" | 否 | 前边距,可用于露出前一项的一小部分,接受px和rpx值 | 1.9.0 |
next-margin | string | "0px" | 否 | 后边距,可用于露出后一项的一小部分,接受px和rpx值 | 1.9.0 |
snap-to-edge | boolean | "false" | 否 | 当swiper-item的个数大于等于2,关闭circular并且开启previous-margin或next-margin的时候,可以指定这个边距是否应用到第一个、最后一个元素 | 2.12.1 |
display-multiple-items | number | 1 | 否 | 同时显示的滑块数量 | 1.9.0 |
easing-function | string | "default" | 否 | 指定swiper切换缓动动画类型 | 2.6.5 |
bindchange | eventhandle | 否 | current改变时会触发change事件,event.detail={current,source} | 1.0.0 | |
bindtransition | eventhandle | 否 | swiper-item的位置发生改变时会触发transition事件,event.detail={dx:dx,dy:dy} | 2.4.3 | |
bindanimationfinish | eventhandle | 否 | 动画结束时会触发animationfinish事件,event.detail同上 | 1.9.0 |
这是一个例子的wxml:
<view class="page-section page-section-spacing swiper">
<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
<block wx:for="{{background}}" wx:key="*this">
<swiper-item>
<view class="swiper-item {{item}}">
</view>
</swiper-item>
</block>
</swiper>
</view>
这是对应的js文件:
Page({
data:{
background:['demo-text-1','demo-text-2','demo-text-3'],
indicatorDots:true,
vertical:false,
autoplay:false,
interval:2000,
duration:500
},
changeIndicatorDots(){
this.setData({
indicatorDots:!this.data.indicatorDots
})
},
changeAutoplay(){
this.setData({
autoplay:!this.data.autoplay
})
},
intervalChange(e){
this.setData({
interval:e.detail.value
})
},
durationChange(e){
this.setData({
duration:e.detail.value
})
}
})