uni-app实现侧边栏抽屉效果 uni-app drawer组件用法教程

雨辰君_2577

雨辰君_2577

2026-05-25

388人浏览

原创

uni-drawer 非内置组件,须从插件市场下载并正确放入/components/uni-drawer/目录;Vue 3 中需用ref().value.open()调用,width必须为String类型(如'300rpx'),nvue仅支持px,mask-click=false时需手动关闭,App端需onBackPress拦截返回键,内容超长时scroll-view需设固定高度。

uni-app实现侧边栏抽屉效果 uni-app drawer组件用法教程

uni-drawer 组件在 uni-app 中不是内置组件,必须手动引入插件;直接写 会白屏或报 Unknown custom element 错误。

uni-drawer 组件必须手动引入,不能直接用

官方文档里没说清楚这点,很多新手以为像 button 或 view 那样开箱即用。实际它属于「uni-app 插件市场组件」,需从 插件市场 下载并放入 /components/uni-drawer/ 目录。

  • 下载后不要只复制 .vue 文件——还要确认 /components/uni-drawer/uni-drawer.vue 路径存在且大小写准确(Windows 不敏感,iOS 和小程序严格区分)
  • Vue 3 项目中,ref 获取方式和 Vue 2 不同:Vue 2 用 this.$refs.xxx,Vue 3 要用 ref() 声明 + .value.open() 调用,否则报 Cannot read property 'open' of undefined
  • 如果页面用了 script setup,别漏掉 defineExpose(虽然 uni-drawer 自身不依赖它,但自定义封装时容易踩坑)

width 参数必须是 String 类型,传 Number 会失效

uni-drawer 的 width 属性类型是 String,传 :width="300"(Number)会导致抽屉宽度为 0;必须写成 :width="'300rpx'" 或 :width="'70%'"。

  • 推荐统一用 rpx 单位,避免 H5 和小程序表现不一致(百分比在某些安卓 WebView 下解析异常)
  • 如果设 width="100%",记得给父容器加 position: relative,否则抽屉可能溢出或定位偏移
  • nvue 页面下,width 只支持 px,不支持 rpx 或 %,需条件编译::width="uni.getSystemInfoSync().platform === 'ios' ? '320px' : '300px'"

mask-click=false 时,关闭抽屉只能靠代码触发

设了 :mask-click="false" 后,点击蒙层不会自动关闭抽屉——这是预期行为,不是 bug。但很多人误以为“点了没反应”是组件坏了。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 务必配一个显式关闭按钮,例如:
  • App 端需拦截物理返回键:onBackPress 中判断抽屉是否打开,是则调用 close() 并 return true,否则系统默认退出应用
  • H5 端可监听 popstate 实现浏览器返回键关闭抽屉,但注意 uni.navigateBack 不会触发该事件,得自己管理 history

滚动内容必须包一层 ,且高度要固定

抽屉里内容超长时,直接用 view + scroll-y 无效——uni-drawer 内部容器未设高度,导致 scroll-view 无法计算可滚动区域。

  • 必须显式设置 ,且其父级(即 uni-drawer 的默认 slot)不能有 flex:1 或 height:auto
  • 在小程序中,scroll-view 的 scroll-y 必须配合 style="height: Xpx" 才生效,100% 失效,建议用 calc(100vh - 88rpx)(减去导航栏高度)
  • 如果用了 uni-nav-bar,抽屉内容顶部会被遮挡,需加 padding-top: 88rpx 或用 safe-area-inset-top

uni-drawer 的动画效果、mask 透明度、open/close 回调都藏在内部,没暴露 API;想深度定制(比如改滑入速度、加挤压动画),得 fork 源码改 uni-drawer.vue 里的 transition 和 transform 逻辑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app

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

相关专题

更多
Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

20

14

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

2026.11.02

20

17

Uvicorn安装配置教程
Uvicorn安装配置教程

本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

2026.11.02

20

17

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

120

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

100

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

300

10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习