swiper

滑块视图容器,其中只可放置 <swiper-item/> 组件,否则可能导致异常。

属性名 类型 默认值 说明 最低版本
indicator-dots Boolean false 是否显示面板指示点 1.0.0
indicator-color String rgba(0, 0, 0, .3) 指示点颜色 1.0.0
indicator-active-color String rgba(0, 0, 0, 0) 当前选中的指示点颜色 1.0.0
autoplay Boolean false 是否自动切换 1.0.0
current Number 0 当前选中滑块的 index 1.0.0
current-item-id String "" 当前选中滑块的组件 id,不能与 current 属性同时指定 1.0.0
interval Number 5000 自动切换时间间隔 1.0.0
display-multiple-items Number 1 同时显示的滑块数量 1.0.0
duration Number 500 滑动动画时长 1.0.0
circular Boolean false 是否循环播放(首尾衔接) 1.0.0
vertical Boolean false 滑块放置方向是否为竖直 1.0.0
touchable Boolean true 是否监听用户的触摸事件 1.29.0
bindchange EventHandler current 改变时会触发 change 事件,event.detail = {current, source} 1.0.0
bindtransition EventHandler swiper-item 产生位移时触发 transition 事件,event.detail = {dx, dy} 1.20.0

change 事件的 source 字段表示导致改变的原因,可以有如下值:

  • autoplay 自动播放导致 swiper 变化
  • touch 用户划动导致 swiper 变化
  • 其他原因将用空字符串表示。

swiper-item

滑块视图内容。仅可放置在 <swiper/> 组件中,宽高自动设置为 100%。

属性名 类型 默认值 说明 最低版本
item-id String "" 组件 id

示例

开发者工具中预览

<view class="page-section">
    <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
        <block tt:for="{{background}}">
            <swiper-item>
                <view class="swiper-item {{item}}"></view>
            </swiper-item>
        </block>
    </swiper>
</view>
<view class="page-section">
    <view class="ttui-cells">
        <view class="ttui-cell">
            <view class="ttui-cell__bd">指示点</view>
            <view class="ttui-cell__ft">
                <switch checked="{{indicatorDots}}" bindchange="changeIndicatorDots" />
            </view>
        </view>
        <view class="ttui-cell">
            <view class="ttui-cell__bd">自动播放</view>
            <view class="ttui-cell__ft">
                <switch checked="{{autoplay}}" bindchange="changeAutoplay" />
            </view>
        </view>
    </view>
</view>
Page({
    data: {
        background: ['demo-text-1', 'demo-text-2', 'demo-text-3'],
        indicatorDots: true,
        vertical: false,
        autoplay: false,
        interval: 2000,
        duration: 500,
    },
    changeIndicatorDots: function(e) {
        this.setData({
            indicatorDots: !this.data.indicatorDots,
        });
    },
    changeAutoplay: function(e) {
        this.setData({
            autoplay: !this.data.autoplay,
        });
    },
    intervalChange: function(e) {
        this.setData({
            interval: e.detail.value,
        });
    },
    durationChange: function(e) {
        this.setData({
            duration: e.detail.value,
        });
    },
});