微信小程序实现美团菜单


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中:radio选择器用法实例
Jan 03 Javascript
javascript实现数独解法
Mar 14 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
javascript 判断当前浏览器版本并判断ie版本
Feb 17 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
深入理解基于vue-cli的vuex配置
Jul 24 Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
前端性能优化建议
Sep 17 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
详解PHP队列的实现
2019/03/14 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python3 操作符重载方法示例
2017/11/23 Python
微信跳一跳游戏python脚本
2020/04/01 Python
python构建深度神经网络(续)
2018/03/10 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
web页面录屏实现
2019/02/12 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
三年级学生评语
2014/04/23 职场文书
师范大学生求职信
2014/06/13 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2015年招聘工作总结
2014/12/12 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL