小程序<swiper>轮播图组件自定义面板

思路:

1.不开启面板指示点

2.自定义面板样式,通过bindchange来改变点击状态及滑动

js

Page({
	data:{
		slideList:[
                      { selected: true,  css: 'background:#999' },
                      { selected: false, css: 'background:pink' },
                      { selected: false, css: 'background:green' },
                    ],
                slideCurrent:0  //用来定义当前轮播图的index
	        },
                  change:function(e){    //轮播图改变的时候触发
                       var selectedList = this.data.slideList;
                       for(var i=0;i<selectedList.length;i++){
                          var selected = "slideList[" + i + "].selected"; //用this.setData修改数组中对象的变量
                          if (i == e.detail.current){
                            this.setData({ [selected] : true}); //修改数组中对象的变量 加[]
                          }else{
                            this.setData({ [selected]: false });
                          }
                        }
                },
                  changedots : function(e){  //点击指示点 切换轮播图
                    var index = e.currentTarget.dataset.index; //当前点击的index
                    this.setData({ slideCurrent: index});
                    var selectedList = this.data.slideList;
                    for (var i = 0; i < selectedList.length; i++) {
                      var selected = "slideList[" + i + "].selected";
                      if (i == index) {
                        that.setData({ [selected]: true });
                      } else {
                        that.setData({ [selected]: false });
                      }
                    }
                  },
wxss
.tab {width: 300px; justify-content: center}
.item {width: 40px;border: 1px solid red;margin:5px; }
.item.selected {width: 40px;border: 1px solid black;margin:5px; }


wxml
<view class='slideBox' style='position:relative'>
  <swiper class='banner' style='width:300px;height:300px;border:1px solid red' bindchange='change' autoplay duration='3000' interval='5000' circular current='{{slideCurrent}}'>
    <block wx:for="{{slideList}}">
      <swiper-item style="{{item.css}}">{{index+1}}</swiper-item>
    </block>
  
  </swiper>
  <!-- 面板指示点 -->
  <view class='tab' style='height:40px;position:absolute;bottom:0;display:flex'>
    <block wx:for="{{slideList}}">  <!--用class来决定选择的状态-->
      <view wx:if="{{item.selected}}" class='item selected' bindtap='changedots' data-index="{{index}}">{{index+1}}</view>
      <view wx:else class='item' bindtap='changedots' data-index="{{index}}">{{index+1}}</view>
    </block>
  </view>
</view>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值