微信小程序实现美团菜单


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 相关文章推荐
CCPry JS类库 代码
Oct 30 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
JavaScript 输入框内容格式验证代码
Feb 11 Javascript
JavaScript prototype属性深入介绍
Nov 27 Javascript
深入剖析JavaScript中的枚举功能
Mar 06 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
使用jQuery实现购物车
Oct 29 jQuery
详解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-fpm添加service服务的例子
2018/04/27 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
环境科学专业个人求职信
2013/09/26 职场文书
运动会广播稿500字
2014/01/28 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
防暑降温通知书
2015/04/27 职场文书
门卫管理制度范本
2015/08/05 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
五年级数学教学反思
2016/02/16 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js