微信小程序微信小程序开发小程序基础

小程序:滑块视图swiper

2018-06-11  本文已影响149人  Mccc_

代码GitHub地址

一.基本实现

<swiper>
  <swiper-item></swiper-item>
</swiper>

二. 属性说明

属性名 类型 默认值 说明
vertical Boolean false 滑动方向是否为纵向
indicator-dots Boolean false 是否显示面板指示点。横向显示:指示点在低中部。纵向显示:指示点在右中部。
indicator-color Color rgba(0, 0, 0, .3) 未选中的指示点颜色
indicator-active-color Color #000000 选中的指示点颜色
autoplay Boolean false 是否自动轮播
interval Number 5000ms 自动轮播的时间间隔
duration Number 500ms 轮播的动画时长
circular Boolean false 是否衔接循环滑动
previous-margin String "0px" 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值
next-margin String "0px" 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值
display-multiple-items Number 1 同时显示的swiper-item的数量
current Number 0 当前所在滑块的 index。 设置该属性,可以让swiper默认显示第几个元素,注意不要数组越界。
current-item-id String "" 当前所在滑块的 item-id ,不能与 current 被同时指定. 需要指定current-item-id为某一个swiper-item的item-id,不要指定到一个不存在的item-id
事件名 类型 说明
bindanimationfinish EventHandle 轮播动画结束时会触发 animationfinish 事件。即监听滑动到第几个item的事件。
bindchange EventHandle current 改变时会触发 change 事件

两者基本没有什么区别。

四. 其他

点击事件 : 点击某一个swiper跳转页面

// wxml
<swiper catchtap="onItemClick">
  <swiper-item>
    <view data-postId="10"></view>
  </swiper-item>
</swiper>
// js
  onItemClick:function(event) {
// 获得到点击的swiper-item进行页面跳转处理,这里用模态展示效果
    wx.showToast({
      icon: "none",
      title: "postid=" + event.target.dataset.postid,
    })
  }

五. 可运行代码

<view class="container">
  <swiper class="swiper" indicator-dots autoplay circular indicator-color='gray' indicator-active-color='red' interval="3000" bindchange="bindchange" bindanimationfinish="animationfinish" catchtap="onItemClick" current-item-id="{{index}}">
    <swiper-item item-id="0">
      <view class="swiper-item swiper-item-zero" data-postId="0">第0个</view>
    </swiper-item>
    <swiper-item item-id="1">
      <view class="swiper-item swiper-item-one" data-postId="1">第1页</view>
    </swiper-item>
    <swiper-item item-id="2">
      <view class="swiper-item swiper-item-two" data-postId="2">第2页</view>
    </swiper-item>
  </swiper>
</view>
.swiper {
  background-color: red;
  width: 50%;
  height: 200px;
}

.swiper-item {
  text-align: center;
  line-height: 200px;
}

.swiper-item-zero {
  background-color: yellow;
}

.swiper-item-one {
  background-color: orange;
}

.swiper-item-two {
  background-color: greenyellow;
}
Page({
  data: {
    index: 1    // 默认滑动到第几页
  },

  onLoad: function (options) {
  },

  bindchange: function (event) {
    console.log("bindchange");
    console.log(event);
  },
  onItemClick: function (event) {
    wx.showToast({
      icon: "none",
      title: "postid=" + event.target.dataset.postid,
    })
  },
  animationfinish: function (event) {
    console.log("animationfinish");
    console.log(event);
  }
})
上一篇下一篇

猜你喜欢

热点阅读