注册登录

怎么制作微信小程序滑动下拉菜单?

2020-09-28
导读:滑动下拉菜单是很常见的功能,微信小程序滑动下拉菜单到底是什么样的呢?你想看看微信小程序滑动下拉菜单效果吗?小编就特意准备了怎么制作微信小程序滑动下拉菜单?微信小程序滑...

  滑动下拉菜单是很常见的功能,微信小程序滑动下拉菜单到底是什么样的呢?你想看看微信小程序滑动下拉菜单效果吗?小编就特意准备了怎么制作微信小程序滑动下拉菜单?微信小程序滑动下拉菜单教程与大家分享一下。

  

怎么制作微信小程序滑动下拉菜单?

 

  微信小程序下拉菜单思路与步骤:

  布局方面,整体使用dl来写,二级包在dd中,用ul li来写;交互方面,点击某一级菜单,关闭兄弟子菜单,点击某子菜单关闭所有菜单。

  1.使用dt做出第一级菜单

  2.使用dd嵌套第二级菜单,初始隐藏、position为absolute,使用z-index浮出页面层

  /*总菜单容器*/

  .menu {display: block;height: 38px;}

  /*一级菜单*/

  .menu dt {

  font-size: 15px;float:left;width: 33%;height: 38px;border-right: 1px solid #d2d2d2;

  border-bottom: 1px solid #d2d2d2; text-align: center;background-color: #f4f4f4; color: #5a5a5a;line-height: 38px;

  }

  /*二级菜单外部容器样式*/

  .menu dd{ position: absolute;width: 100%;top:39px; left:0;z-index:999;}

  /*二级菜单普通样式*/

  .menu li{

  font-size: 14px; line-height: 34px;color: #575757;height: 34px;display: block;padding-left: 8px;

  background-color: #fff;border-bottom: 1px solid #dbdbdb;

  }

  查看效果,接下来实现点击事件。

  如图

  

怎么制作微信小程序滑动下拉菜单?

 

  3.dt绑定点击事件tapMainMenu,flag控制显隐toggle,提供2个class,hidden与show,来控制显隐。注:dt也是可以bindTap的,不单是view。

  /* 显示与隐藏 */

  .show {

  display: block;

  }

  .hidden {

  display: none;

  }

  web前端开发http://www.51xuediannao.com/

  4.关闭所有一级菜单,每个一级菜单都有一个index标识,由tapMainMenu事件传递过去,与数组subMenuDisplay一一对应,当前元素subMenuDisplay[index]视原来状态决定是显示或隐藏。

  核心代码:

  价格

  sub1

  sub2

  //使用function初始化array,相比var initSubMenuDisplay = [] 既避免的引用复制的,同时方式更灵活,将来可以是多种方式实现,个数也不定的

  function initSubMenuDisplay() {

  return ['hidden', 'hidden', 'hidden'];

  }

  Page({

  data:{

  subMenuDisplay:initSubMenuDisplay()

  },

  tapMainMenu: function(e) {// 获取当前显示的一级菜单标识

  var index = parseInt(e.currentTarget.dataset.index); // 生成数组,全为hidden的,只对当前的进行显示

  var newSubMenuDisplay = initSubMenuDisplay();// 如果目前是显示则隐藏,反之亦反之。同时要隐藏其他的菜单

  if(this.data.subMenuDisplay[index] == 'hidden') {

  newSubMenuDisplay[index] = 'show';

  } else {

  newSubMenuDisplay[index] = 'hidden';

  } // 设置为新的数组

  this.setData({

  subMenuDisplay: newSubMenuDisplay

  });

  }

  });

  5.选中二级菜单当前项,但给个系统icon及改变背景色,文本加粗,同样改变一级菜单标题,demo中给出一个弹窗

  声明tapSubMenu方法,监听二级点击事件

  //获取当前显示的一级菜单标识

  tapSubMenu: function(e) {

  var index = parseInt(e.currentTarget.dataset.index);

  console.log(index); // 隐藏所有一级菜单

  this.setData({

  subMenuDisplay: initSubMenuDisplay()

  });

  }

  加highlight效果

  /*二级菜单高亮样式*/

  .menu li.highlight{

  background-color: #f4f4f4;

  }

  与一级菜单不同,使用二维数组的方式实现点击高亮,这样才能定位到是某一级的某二级菜单,再决定显示隐藏。 布局文件改成:

  100以内

  100-500

  500-1000

  1000-3000

  3000以上

  效果如图

  

怎么制作微信小程序滑动下拉菜单?

 

  相应的js代码要写成:

  //声明初始化高亮状态数组function initSubMenuHighLight() { return [

  ['','','','',''],

  ['',''],

  ['','','']

  ];

  }

  点击事件

  tapSubMenu: function(e) { // 隐藏所有一级菜单

  this.setData({

  subMenuDisplay: initSubMenuDisplay()

  }); // 处理二级菜单,首先获取当前显示的二级菜单标识

  var indexArray = e.currentTarget.dataset.index.split('-'); console.log("indexArray : " + indexArray); var newSubMenuHighLight = initSubMenuHighLight(); // 与一级菜单不同,这里不需要判断当前状态,只需要点击就给class赋予highlight即可

  newSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight'; console.log(newSubMenuHighLight); // 设置为新的数组

  this.setData({

  subMenuHighLight: newSubMenuHighLight

  });

  }

  这样就实现了高亮与取消高亮。但还没完,与一级菜单不同,这里与兄弟子菜单是非互斥的,也就是说点击了本菜单,是不能一刀切掉兄弟菜单的高亮状态的。于是我们改进js代码。

  声明方式,改用变量形式,方便存储。

  //定义初始化数据,用于运行时保存

  var initSubMenuHighLight = [

  ['','','','',''],

  ['',''],

  ['','','']

  ];

  点击事件

  tapSubMenu: function(e) { // 隐藏所有一级菜单

  this.setData({

  subMenuDisplay: initSubMenuDisplay()

  }); // 处理二级菜单,首先获取当前显示的二级菜单标识

  var indexArray = e.currentTarget.dataset.index.split('-'); // 初始化状态

  // var newSubMenuHighLight = initSubMenuHighLight;

  for (var i = 0; i < initSubMenuHighLight.length; i++) { // 如果点中的是一级菜单,则先清空状态,即非高亮模式,然后再高亮点中的二级菜单;如果不是当前菜单,而不理会。经过这样处理就能保留其他菜单的高亮状态

  if (indexArray[0] == i) { for (var j = 0; j < initSubMenuHighLight[i].length; j++) { // 实现清空

  initSubMenuHighLight[i][j] = '';

  } // 将当前菜单的二级菜单设置回去

  }

  } // 与一级菜单不同,这里不需要判断当前状态,只需要点击就给class赋予highlight即可

  initSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight'; // 设置为新的数组

  this.setData({

  subMenuHighLight: initSubMenuHighLight

  });

  }

  以上就是怎么制作微信小程序滑动下拉菜单?微信小程序滑动下拉菜单教程,更多小程序资讯,请持续继续关注Hi商学院

重磅推荐:小程序开店目录

第一部分:小商店是什么

第二部分:如何开通一个小商店

第三部分:如何登录小商店

第四部分:开店任务常见问题

第五部分:小商店可以卖什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收货/物流

第九部分:小程序怎么结算

第十部分:小程序客服

第十一部分:电商创业

第十二部分:小程序游戏开发

电话咨询 微信咨询 预约演示 0元开店