微信小程序实现美团菜单


Posted in Javascript onJune 06, 2018

本文实例为大家分享了微信小程序实现美团菜单的具体代码,供大家参考,具体内容如下

微信小程序实现美团菜单

1.功能仅是菜单功能一部分,仅供参考

2.需求描述:右侧菜品部分在滚动的时候,左侧菜品选中分类与右侧第一行菜品所在分类对应。

我的实现方式:(每个菜品高度*该分类菜品数量)+菜品分类高度 = x, 每次滚动的时候判断当前scrollTop是否在x范围内?左侧选中该分类:左侧不做改变;
问题:我设置菜品高度的单位是rpx,而scrollTop的单位是px,这也就是说,上面我计算的x是个变量, 所以当改变测试机型,这个功能就失效了。。。请教各位有什么好的方法没?

onLoad(e) {
 let goodsList = this.data.goodsList;
 // 初始化每项菜品距离顶部的距离
 for (let i = 0; i < goodsList.length; i++) {
 if (i != 0)
 goodsList[i].scrollTop = parseInt(goodsList[i - 1].scrollTop) + parseInt((goodsList[i - 1].goods.length * 90) + 35)
 }
 this.data.goodsList = goodsList;
},
// 右侧滚动事件
onGoodsScroll: function (e) {
 let that = this;
 // 当前滚动部分距离页面顶部距离
 let scrollTop = parseInt(e.detail.scrollTop);
 let goodsList = that.data.goodsList;
 for (let i = 0; i < goodsList.length; i++) {
 let currentScrollTop = goodsList[i].scrollTop;
 let nextScrollTop = 0;
 if ((i + 1) == goodsList.length)
 nextScrollTop = goodsList[i].scrollTop;
 else
 nextScrollTop = goodsList[i + 1].scrollTop;

 if (currentScrollTop < scrollTop && scrollTop < nextScrollTop) {
 that.setData({
 classifyIdLeft: goodsList[i].id,
 classifySeleted: goodsList[i].id
 })
 }
 }
}

关于上面提到的问题2,解决方法如下,但是具体参数没搞明白怎么回事,而且定位也不是很准,请求各位有什么好方法。

// 右侧滚动事件
 onGoodsScroll: function (e) {
 let that = this;
 let scale = e.detail.scrollWidth / 600;
 let scrollTop = e.detail.scrollTop / scale;
 let h = 0;
 let classifySeleted;
 let len = that.data.goodsList.length;

 that.data.goodsList.forEach(function (classify, i) {
 var _h = 70 + classify.goods.length * 180;
 if (scrollTop >= h - 100 / scale) {
 classifySeleted = classify.id;
 }
 h += _h;
 });
 that.setData({
 classifySeleted: classifySeleted,
 classifyIdLeft: classifySeleted,
 })
 },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
javascript实现标签切换代码示例
May 22 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
vue解决跨域问题(推荐)
Nov 10 Javascript
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
详解express + mock让前后台并行开发
Jun 06 #Javascript
vue element项目引入icon图标的方法
Jun 06 #Javascript
vue脚手架搭建过程图解
Jun 06 #Javascript
vue左右侧联动滚动的实现代码
Jun 06 #Javascript
Express本地测试HTTPS的示例代码
Jun 06 #Javascript
微信小程序仿美团城市选择
Jun 06 #Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 #jQuery
You might like
功能强大的php分页函数
2016/07/20 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
python验证码识别的示例代码
2017/09/21 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
python and or用法详解
2019/06/26 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
pandas分批读取大数据集教程
2020/06/06 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
大专会计自我鉴定
2014/02/06 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
格列夫游记读书笔记
2015/07/01 职场文书