【菜狗学前端】uniapp(vue3|微信小程序)实现外卖点餐的左右联动功能

记录,避免之后忘记......

一、目的:实现左右联动

  1. 右->左 滚动(上拉/下拉)右侧,左侧对应品类选中
  2. 左->右 点击左侧品类,右侧显示对应品类

二、实现右->左 滚动(上拉/下拉)右侧,左侧对应品类选中

1.在data()中初始化需要用到的数据

须知:左侧哪个品类选中是根据trigger==index比较得出的

2.在onLoad()中调用getheight()获取右侧各品类高度,给this.heightset数组赋值

javascript 复制代码
// 回调函数,在数据发生改变时,在渲染dom之后,回制动执行回调函数

// 获取不同分类的高度

this.$nextTick(()=>{

this.getheight()

})

getheight()函数:

javascript 复制代码
// 获取右侧各分类高度

getheight(){

const query=wx.createSelectorQuery()

query.selectAll('.rig-height').boundingClientRect()

query.exec(res=>{

let height=0

res[0].forEach(item=>{

height = height+item.height

this.heightset.push(height)

})

console.log(this.heightset);

})

}

打印结果:

3.给右侧<scroll-view>组件绑定滚动函数@scroll="scrollRight",根据实际滚动高度与当前品类高度比较结果改变trigger进而改变左侧选中品类。

javascript 复制代码
// 右侧滚动触发

scrollRight(e){

// console.log(e.detail.scrollTop)//获取当前滚动实际高度

if(e.detail.scrollTop>=this.heightset[this.trigger]){//上拉到下一个品类

this.trigger++

}else{

if(e.detail.scrollTop<this.heightset[this.trigger-1]){//下拉到上一个品类

this.trigger--

}

}

}

三、实现左->右 点击左侧品类,右侧显示对应品类

1.使用scroll-view组件的scroll-into-view属性实现

2.给左侧各品类绑定点击函数,改变this.trigger和this.scroll_into

相关推荐
3秒一个大19 小时前
JavaScript 作用域:从执行机制到块级作用域的演进
javascript
OLong19 小时前
忘掉"发请求",声明你要的数据:TanStack Query 带来的思维革命
前端
琦遇19 小时前
Vue3使用vuedraggable实现拖拽排序
前端
银月流苏19 小时前
Vue 深度选择器 `:deep` 使用说明
前端
程序媛ing19 小时前
React + ECharts 动态折线图实现
前端·react.js
星空的资源小屋19 小时前
VNote:程序员必备Markdown笔记神器
javascript·人工智能·笔记·django
广州华水科技19 小时前
单北斗GNSS变形监测在地质灾害与基础设施安全中的应用与优势分析
前端
摇滚侠19 小时前
Vue 项目实战《尚医通》,实名认证模块静态的搭建,笔记53
vue.js·笔记
程序员鱼皮20 小时前
又被 Cursor 烧了 1 万块,我麻了。。。
前端·后端·ai·程序员·大模型·编程
孟祥_成都20 小时前
nextjs 16 基础完全指南!(一) - 初步安装
前端·next.js