# mx-swiper 轮播图

用于导航轮播,广告展示等场景,可开箱即用,支持自定义指示器模式,3D轮播图效果,配置显示标题,设置加载状态和嵌入视频。

# 引入

在app.json或index.json中引入组件,详细介绍见快速上手

"usingComponents": {
  "mx-swiper": "/miniprogram_npm/m-ui/mx-swiper/index"
}

# 小程序码

可使用微信扫码查看小程序码

#

# 代码演示

# 基本用法

通过list参数传入轮播图列表值,该值为一个数组,键值为图片路径。

<mx-swiper list="{{list1}}" bind:change="change" bind:click="click"></mx-swiper>
Page({
  data: {
   list1: [
      'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152510859.png',
      'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152448695.png',
      'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152514533.png',
    ],
  }
});

# 带标题

添加showTitle属性以展示标题,此时list的参数应为一个对象:例如: (请注意:您期望使用对象作为参数时,需要配置mx-swiper组件的keyName参数为您当前对象的图片key值)如:keyName="image"

<mx-swiper list="{{list2}}" keyName="image" showTitle autoplay="{{false}}" circular></mx-swiper>
Page({
  data: {
   list2: [
      {
        image: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152448695.png',
        title: '昨夜星辰昨夜风,画楼西畔桂堂东',
        type: 'image',
      },
      {
        image: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152510859.png',
        title: '身无彩凤双飞翼,心有灵犀一点通',
      },
      {
        image: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152514533.png',
        title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳',
      },
    ],
  }
});

# 带指示器

通过indicator属性添加指示器。

<mx-swiper list="{{list1}}" indicator indicatorMode="line" circular></mx-swiper>

# 加载中

通过添加loading属性达到加载中的状态。

<mx-swiper list="{{list3}}" loading></mx-swiper>

# 嵌入视频

我们提供了嵌入视频的能力,为避免资源浪费,在您切换轮播的时候视频会停止播放,你可以设置poster指定视频封面。

<mx-swiper list="{{list4}}" keyName="url" autoplay="{{false}}"></mx-swiper>
Page({
  data: {
   list4: [
      {
        url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
        title: '昨夜星辰昨夜风,画楼西畔桂堂东',
        poster: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152510859.png',
      },
      {
        url: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152448695.png',
        title: '身无彩凤双飞翼,心有灵犀一点通',
      },
      {
        url: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152514533.png',
        title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳',
      },
    ],
  }
});

# 指定类型

默认会根据链接自动判断swiper-item类型,但是在极端情况下可能会不准确,所以我们提供了指定item的类型,通过设置type为video或image即可。

<mx-swiper list="{{list4}}" keyName="url" autoplay="{{false}}"></mx-swiper>
Page({
  data: {
   list4: [
      {
        url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
        type: 'video'
        title: '昨夜星辰昨夜风,画楼西畔桂堂东',
        poster: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152510859.png',
      },
      {
        url: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152448695.png',
        title: '身无彩凤双飞翼,心有灵犀一点通',
        type: 'image'
      },
      {
        url: 'http://dolphin-weex-dev.msmartlife.cn/cdn/images/ui_library/swipe/IMG20200731-152514533.png',
        title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳',
      },
    ],
  }
});

# 自定义指示器

如您需要以指示点或数字形式来自定义指示器,请参考如下案例

<mx-swiper list="{{list5}}" bind:change="change1" autoplay="{{false}}">
        <view slot="indicator" class="indicator">
          <view
            wx:for="{{list1}}"
            wx:for-item="item"
            wx:key="index"
            class="indicator__dot {{index === current && 'indicator__dot--active'}}"
          >
          </view>
        </view>
      </mx-swiper>
      <mx-divider borderHeight="15px"></mx-divider>
      <mx-swiper list="{{list1}}" bind:change="change2" autoplay="{{false}}" indicatorStyle="right: 20px">
        <view slot="indicator" class="indicator-num">
          <text class="indicator-num__text">{{ currentNum + 1 }}/{{ list6.length }}</text>
        </view>
      </mx-swiper>
.indicator
{
	display:flex;
	flex-direction:row;
	justify-content:center;
}

.indicator__dot
{
	height:6px;
	width:6px;
	border-radius:100px;
	background-color:rgba(255,255,255,0.35);
	transition:background-color .3s;
	margin:0 5px;
}

.indicator__dot--active
{
  width: 12px;
	background-color:#fff;
}

.indicator-num
{
	background-color:rgba(0,0,0,0.35);
	border-radius:100px;
	width:35px;
	display:flex;
	justify-content:center;
	padding:2px 0;
}

.indicator-num__text
{
	color:#FFF;
	font-size:12px;
}

# 卡片式轮播

如您需要以指示点或数字形式来自定义指示器,请参考如下案例

 <mx-swiper list="{{list1}}" height="140" previousMargin="30" nextMargin="30" circular bgColor="#ffffff"></mx-swiper>

# API

# Swiper Props

参数 说明 类型 默认值
list 轮播图数据 Array []
indicator 是否显示面板指示器 boolean false
indicator-active-color 指示器激活的颜色 string #ffffff
indicator-inactive-color 指示器非激活颜色 string rgba(255, 255, 255, 0.5)
indicator-style 指示器样式,可通过bottom left right进行定位 String,Object -
indicator-mode 指示器模式,可选值line dot string dot
autoplay 是否自动切换 boolean true
current 当前所在滑块的 index number,string 0
currentItemId 当前所在滑块的 item-id ,不能与 current 被同时指定 string -
interval 滑块自动切换时间间隔(ms) string,number 5000
duration 滑块切换过程所需时间(ms) string,number 300
circular 是否循环播放 boolean false
previous-margin 前边距,可用于露出前一项的一小部分 string,number 0
next-margin 后边距,可用于露出后一项的一小部分 string,number 0
acceleration 当开启时,会根据滑动速度,连续滑动多屏 bealoon false
display-multiple-items 同时显示的滑块数量 number 1
easing-function 指定swiper切换缓动动画类型,可选值linear easeInCubic easeOutCubic easeInOutCubic string default
key-name list数组中指定对象的目标属性名 string url
img-mode 图片的裁剪模式,可选值可见微信图片裁剪 string aspectFill
height 组件高度 string,number 140
bg-color 背景颜色 string #f3f4f6
radius 滑块切换过程所需时间(ms) string,number 300
loading 是否加载中 boolean false
previous-margin 前边距,可用于露出前一项的一小部分 string,number 0
show-title 是否显示标题,要求数组对象中有title属性 boolean false

# Swiper Events

事件名 说明 参数
bind:click 点击轮播图时触发 index:点击了第几张图片,从0开始
bind:change 轮播图切换时触发(自动或者手动切换) index:切换到了第几张图片,从0开始

# SwiperIndicator Props

参数 说明 类型 默认值
length 轮播的长度 string,number 0
current 当前处于活动状态的轮播的索引 string,number 0
indicator-active-color 指示器非激活颜色 string -
indicator-inactive-color 指示器非激活颜色 string -
indicator-style 指示器模式,可选值line dot string dot