微信小程序 使用swiper制作一个滑动导航

news/2024/7/5 5:52:17

最近在做一个导航的时候,发现使用overflow-x: auto来做多内容滑动导航效果很不好,思索是不是可以使用swiper来做一个,研究了下其实发现原理基本相同

这里说下,要用swiper做导航菜单,有几个要特别注意的参数

1:autoplay,官方说明【是否自动切换】,这个不填,菜单可不能自己动

2:indicator-dots ,官方说明【是否显示面板指示点】,这个也不填,

3:display-multiple-items,官方说明【同时显示的滑块数量】,敲重点,这个参数必须设为1,要与previous-margin 和next-margin参数来控制焦点高亮图居中

4,previous-margin 和next-margin,官方说明【前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值】【后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值】

5,current,官方说明【当前所在滑块的 index】,主要控制哪一个被选中,比如默认加载第二项或点击某一个让其选中

 

 

<view class="container" >
  <view class="swiper-content"> 
   
    <swiper class='coffeeClassification-box'  autoplay='' display-multiple-items='{{multipleNums}}'  previous-margin="240rpx" next-margin="240rpx" current="{{multipleNumIndex}}" bindchange="coffeeClassificationChangeScroll" bindtransition="eventHandles">
         
          <swiper-item class="nav-boxs {{multipleNumIndex == index ? 'on' : ''}}"   wx:for="{{menuTwoCon}}"  wx:key="{{index}}"  bindtap="coffeeClassificationChange"  data-id="{{item.id}}" data-index="{{index}}">
            <view class='item-box'>
              <image  class="slide-image {{multipleNumIndex == index ? 'active' : ''}}"  src="{{item.image}}"/>
              <text>{{item.product_name}}</text>
            </view>
            
          </swiper-item>
        
    </swiper>
  </view>
</view>

 

.item-box{
  width: 100%;
  height: 200rpx;
 
}
.item-box image{
  width: 100%;
  height: 200rpx;
}
.coffeeClassification-box .nav-boxs{
  text-align: center;
   padding-top: 20rpx;
}
.coffeeClassification-box .nav-boxs.on{
  
   padding-top: 0rpx;
}
.coffeeClassification-box .nav-boxs .slide-image{
  width: 100rpx;
  height: 80rpx;
  border: 1px solid #666;
  margin: 0 auto;
}
.coffeeClassification-box .nav-boxs .slide-image.active{
  width: 180rpx;
  height: 120rpx;
  border: 1px solid #ff0000;
}
.item-box text{
  display: block;
  font-size: 24rpx;
  
}
// pages/memberDetails/memberDetails.js
const apps = require('../../app.js')
var app = getApp();
// const swiper = require('./../../utils/swiper/swiper.min.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    menuTwoCon:[],
    multipleNumIndex:0, //默认显示的位置
    multipleNums:1, //默认显示数量
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;
    var data = {}
    var url = getApp().globalData.url; //接口路径
    // console.log("data-------/---", that.data.currentTab);
    // var tid = e.currentTarget.dataset.tid;
    var category_id = that.data.currentTabTid;
    var currentTab = that.data.currentTab;
    data.category_id ="29"

    wx.request({ //请求二级分类菜单列表
      method: "get",
      url: url + '/Api/lists/module/product/key/dac509bd90a82719a3569291e12c24a6f1af4bac',
      data: data,
      header: {
        'content-type': 'application/json'
      },
      dataType: "json",
      success: function (res) {



        var dataSource = [], data = [];

        res.data.result && res.data.result.map(item => {
          dataSource.push(item)
        })




       
          data = dataSource
        




        var multipleNumrppg = that.data.multipleNumrppg;
        that.setData({

          // currentTab: menuTwo[0].id, //默认二级分类选中菜单赋值
          menuTwoCon: data,//默认二级分类内容
          multipleNumIndex: multipleNumrppg
        });

      }, fail: function (res) {
        // console.log("请求主分类菜单列表3", res)
      }
    })
    const img = "";
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  coffeeClassificationChangeScroll:function(e){
    var that = this
    console.log("1111", e.detail.current);
    var multipleNumrppg = e.detail.current;
    var shopId= that.data.menuTwoCon[multipleNumrppg].id
    that.setData({
      multipleNumIndex: multipleNumrppg
    });
    that.getShopList(shopId)
  },
   coffeeClassificationChange:function(e){
    var that = this;
    var clickId = e.currentTarget.dataset.index;
    var shopId = e.currentTarget.dataset.shopid;
    this.setData({
      multipleNumIndex: clickId
    })
    that.getShopList(shopId)
  },
    getShopList: function(shopId){ 
      console.log("shopId----->",shopId );
      wx.request({data:shopId,url:'...' })
  }
})

 特别说明下,点击选择时,可以直接取自定义的shopid来作为参数传入查询内容方法,

但是在滑动方法时却没办法取自定义的shopid,只能取当前滑块下标,

所以我在coffeeClassificationChange()方法中,用滑块下标来作为导航菜单列表组数的下标条件来取shopid,

 var shopId= that.data.menuTwoCon[multipleNumrppg].id 

这算是swiper模块的一个小坑吧

转载于:https://www.cnblogs.com/zhixi/p/10337840.html


http://www.niftyadmin.cn/n/4556425.html

相关文章

下列程序的运行结果是

答案补充 不好意思 s2[5]时 ||| C 负数 上面那段程序 输出的是 -1 ||| A 0 s2以多一个字节的形式显示出来 则不会产生0xCC 如果这两个变量使用8字节 而是4字节偏移填充 发现上面的0xCC并不是变量分界 经过实验 就产生了-1的结果 而s2为字符数组 它占的空间实际为6个字节 即0 它…

计算机等级考试三级网络技术要求掌握C语言吗

那就需要汇编语言了 如果你考PC就不用了 那是一定的

c语言是什么意思

建议你再看下书 在编译运行后就输出什么东西 i);   printf(“x2%8.4f-%8.4fi/n”r x2);   }   else   {r-b/(2*a);   i sqrt(-d)/(2*a);   printf(“x1%8.4f%8.4fi/n”r x1 x2%8.4f/n” 方程有两个实根 要解释这个问题实在困难 ||| public static void main(String…

centos6.5上安装配置telnet服务

https://blog.csdn.net/wx5040257/article/details/78327915转载于:https://www.cnblogs.com/diyunpeng/p/10339664.html

一道C语言题目

||| 你好意思啊 字母或结尾输出&#xff09; */} ||| int func(char *s *q); putchar(/n); printf("一共输入了%d个数字 你可以用编译原理的有限自动机的思想&#xff08;再写一个函数也行&#xff09; intarr[i]); return 0;} intarr); for (i0; i<count; i) printf(&…

Java RSA公钥、私钥与C#RSA公钥、私钥转换

最近公司项目需要对接第四方支付接口&#xff0c;但是对方的demo是Java的,给的算法是Java版本的公钥和私钥&#xff0c;如果要做RSA加密就需要将Java的公钥和私钥转换成dotnet版本的公钥和私钥&#xff0c;具体的算法如下&#xff1a; 1 /// <summary> 2 …

fiddler软件测试——Fiddler抓取https设置详解(图文)

强烈推荐&#xff08;原创亲测&#xff09;&#xff01;&#xff01;&#xff01;Fiddler抓取https设置详解&#xff08;图文&#xff09;转 本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤&#xff0c;特别是fiddler在设置证书的环节遇到的各种奇葩问…

大学C语言怎么学啊

||| 关键是基础知识 我就是信息管理专业的大学生 这样就能学好了 多实践 学习理论知识的过程中多自己编程 指针等 顺序结构 比如循环结构 谅解c语言的编程思想和编写程序的各种方式 只能通过学习理论知识 c语言也一样 用得挺上手的. 而且在后面的学习中也经常用到C语言问题解决…