uni-app怎么实现类似美团的分类导航 uni-app宫格滑屏效果【代码】

陌磊姑娘_9299

陌磊姑娘_9299

2026-03-25

939人浏览

原创

uni-app中宫格横向滑动应使用scroll-view而非swiper,需设scroll-x="true"、固定父容器宽高、子项用inline-block或flex布局,配合rpx宽度、手动吸附对齐及scroll-to平滑滚动,并注意三端兼容性问题。

uni-app怎么实现类似美团的分类导航 uni-app宫格滑屏效果【代码】

uni-app 里用 scroll-view 实现宫格横向滑动,别碰 swiper

美团那种分类导航本质是「可拖拽、带惯性、不自动轮播」的横向宫格,swiper 默认带自动切换和翻页逻辑,强行关掉会卡顿、手势冲突,还难对齐。真要用,得切到 scroll-view + 手动控制滚动位置。

关键点:必须设 scroll-x="true",禁用 scroll-y,且父容器要固定宽高(尤其高度),否则内容塌陷;子项用 display: inline-block 或 flex 横向排列,不能靠 float。

  • scroll-view 的 scroll-with-animation 设为 true,否则滑动生硬
  • 每个分类项宽度建议用 rpx 固定(比如 160rpx),避免不同屏幕下错行
  • 如果分类项数量多,别一次性全渲染,用 v-for + :key,但注意 scroll-view 内部 DOM 更新可能触发重绘抖动

怎么让滑动后自动吸附到最近的宫格边界

原生 scroll-view 不支持 snap 对齐,得自己算。监听 scroll-left 变化,在 @scroll 回调里判断当前滚动位置离哪个宫格左边界最近,然后用 this.$nextTick(() => { this.scrollLeft = targetPos }) 强制跳转过去。

注意:直接在 @scroll 里调 scroll-to 会触发新一轮 scroll,造成循环。必须加节流或只在 scrollend 事件(H5 支持,App 和小程序需兼容)里执行。

  • 每个宫格宽度假设是 160rpx,那吸附位置就是 Math.round(scrollLeft / 160) * 160
  • 小程序平台要小心 scroll-left 单位是 px,不是 rpx,得用 uni.upx2px(160) 转换
  • H5 端可直接用 CSS scroll-snap-align: start,但 uni-app 编译后不一定透出,不推荐依赖

点击分类项时平滑滚动到对应位置,而不是突兀跳转

用户点某个分类,需要把整个宫格区域滚动过去,让该项居中或靠左显示。不能直接改 scroll-left 值,得用 scroll-view 的 scroll-to 方法,并传 duration。

问题常出在:没等 DOM 渲染完就去算位置,offsetLeft 拿到的是 0;或者滚动目标是相对 scroll-view 内容区的偏移,不是整个页面。

  • 用 this.$nextTick 包住获取元素位置的逻辑
  • 用 uni.createSelectorQuery() 查 .category-item:nth-child(3) 的 boundingClientRect,比直接 ref 更可靠
  • duration 设成 300 左右,太短像跳,太长像卡
  • App 端 scroll-to 有 bug,偶尔失效,建议 fallback 到直接赋值 scroll-left + scroll-with-animation="true"

真机上滑不动、卡顿、回弹异常的几个硬坑

开发时在 H5 预览没问题,一上真机就各种诡异表现:iOS 微信里滑不动、Android App 滚动延迟半秒、小程序里松手后回弹过头。根本原因不是代码写错,而是平台限制和样式干扰。

  • 父容器不能有 overflow: hidden,哪怕只是上级某个 div,都会截断 touch 事件
  • 别给 scroll-view 加 transform(比如 scale 或 translateZ),iOS 下会禁用原生滚动加速
  • 分类图标用 image 标签时,记得加 mode="aspectFill",否则图片拉伸会撑高容器,导致滚动区域计算错乱
  • 微信小程序基础库低于 2.10.3 时,scroll-view 的 scroll-end 事件不触发,得用 setTimeout 模拟“静止”状态

宫格滑动看着简单,实际每一步都在跟平台底层滚动机制掰手腕。最麻烦的不是怎么写,而是怎么让三端表现一致——H5 用 CSS 滚动,小程序靠 scroll-view,App 端还得单独 patch 原生层。留个心眼:上线前务必在 iOS 微信、安卓微信、iOS App、安卓 App 四个环境各测三遍滑动和点击响应。

美团
美团

美团app是一款吃喝玩乐一应俱全的生活服务类软件,汇集团购、美食、酒店、外卖、电影、美发、美甲、KTV等服务于一体,为用户提供非常便利且全面的服务,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2703

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5883

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6850

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6578

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

943

5

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

4431

6

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

2024.03.06

7748

6

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

2025.12.30

834

19

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

2025.12.30

734

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习