微信小程序实现美团菜单


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学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
String字符串截取的四种方式总结
Nov 28 Javascript
Bootstrap进度条学习使用
Feb 09 Javascript
websocket+node.js实现实时聊天系统问题咨询
May 17 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
高性能的javascript之加载顺序与执行原理篇
Jan 14 Javascript
详解JavaScript 的变量
Mar 08 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 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
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python将xml和xsl转换为html的方法
2015/03/10 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python实现中值滤波去噪方式
2019/12/18 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
幼师自我鉴定范文
2013/10/01 职场文书
英语求职信范文
2014/05/23 职场文书
务虚会发言材料
2014/12/25 职场文书
加薪申请报告范本
2015/05/15 职场文书
停车场管理制度范本
2015/08/05 职场文书
党性修养心得体会2016
2016/01/21 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android