温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

小程序实现美团菜单的示例

发布时间:2020-12-21 14:35:32 来源:亿速云 阅读:293 作者:小新 栏目:移动开发

小编给大家分享一下小程序实现美团菜单的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体内容如下

小程序实现美团菜单的示例

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,  })  },

以上是“小程序实现美团菜单的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI