微信小程序实现美团菜单


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 相关文章推荐
JavaScript 获取事件对象的注意点
Jul 29 Javascript
jquery ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
UserData用法总结 lanyu出品
Jul 01 Javascript
js计算精度问题小结
Apr 22 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
JavaScript模拟push
Mar 06 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
Vue中使用Sortable的示例代码
Apr 07 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 Javascript
Ajax常用封装库——Axios的使用
May 08 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
乔迁宴答谢词
2014/01/21 职场文书
财务人员担保书
2014/05/13 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
连锁超市项目计划书
2014/09/15 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP