阅读(2884) (11)

swiper

2020-02-11 17:45:41 更新
基础库 1.0.0 开始支持本组件。

滑块视图容器,其中只可放置 swiper-item 组件,否则会导致未定义的行为。


属性说明

属性类型默认值必填说明最低支持版本
indicator-dotsbooleanfalse是否显示面板指示点1.0.0
indicator-colorstringrgba(0, 0, 0, .3)指示点颜色1.0.0
indicator-active-colorstringrgba(0, 0, 0, 0)当前选中的指示点颜色1.0.0
autoplaybooleanfalse是否自动切换1.0.0
currentnumber0当前选中滑块的 index1.0.0
current-item-idstring""当前选中滑块的组件 id,不能与 current 属性同时指定1.0.0
intervalnumber5000自动切换时间间隔1.0.0
previous-marginstring""前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值1.0.0
next-marginstring""后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值1.0.0
display-multiple-itemsnumber1同时显示的滑块数量1.0.0
durationnumber500滑动动画时长1.0.0
circularbooleanfalse是否循环播放(首尾衔接)1.0.0
verticalbooleanfalse滑块放置方向是否为竖直1.0.0
bindchangeeventhandlecurrent 改变时会触发 change 事件,event.detail = {current, source}1.0.0
bindanimationfinisheventhandle动画结束时会触发 animationfinish 事件,event.detail = {dx, dy}1.0.0
bindtransitioneventhandleswiper-item 产生位移时触发 transition 事件,event.detail = {dx, dy}1.20.0

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

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


效果示例


代码示例

<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
    });
  }
});