微信小程序实现美团菜单


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 相关文章推荐
在js(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
js控制网页前进和后退的方法
Jun 08 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
jQuery unbind 删除绑定事件详解
May 24 Javascript
BootStrap tab选项卡使用小结
Aug 09 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 Javascript
js简单的分页器插件代码实例
Sep 11 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 Javascript
详解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 操作文件的一些FAQ总结
2009/02/12 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php上传大文件设置方法
2016/04/14 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
Use Word to Search for Files
2007/06/15 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
原生js轮播特效
2017/05/18 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python选课系统开发程序
2016/09/02 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
用Python写一个自动木马程序
2019/09/17 Python
解决c++调用python中文乱码问题
2020/07/29 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
经贸专业毕业生求职信
2014/03/23 职场文书
师范毕业生求职信
2014/07/11 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
先进党支部申报材料
2014/12/24 职场文书
质量保证书
2015/01/17 职场文书
企业法律事务工作总结
2015/08/11 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
人民币符号
2022/02/17 杂记