微信小程序实现美团菜单


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 巧妙去除数组中的重复项
Jan 25 Javascript
使用jquery的ajax需要注意的地方dataType的设置
Aug 12 Javascript
jquery cookie的用法总结
Nov 18 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
jquery跟随屏幕滚动效果的实现代码
Apr 13 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 Javascript
Node.js+Express配置入门教程
May 19 Javascript
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
Jan 16 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 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 数组教程 定义数组
2009/10/23 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php中序列化与反序列化详解
2017/02/13 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
永不消失的title提示代码
2007/02/15 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
vue的常用组件操作方法应用分析
2018/04/13 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
Python学习小技巧之列表项的拼接
2017/05/20 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Python hashlib模块加密过程解析
2019/11/05 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
消防安全管理制度
2014/02/01 职场文书
合作经营协议书
2014/04/17 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
怎样写离婚协议书
2015/01/26 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
优质护理服务心得体会
2016/01/22 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
使用CSS实现音波加载效果
2023/05/07 HTML / CSS