Skip to content

newui 使用文档 ​

本文档随插件发行。各组件的详细教程(说明 / 平台兼容性 / 示例代码 / API 属性·事件·插槽表) 位于 uni_modules/new-ui/components/<组件名>/readme.md,配合 IDE 提示即查即用。 版本变更见 changelog.md(最新版)与 changeloglist.md(完整历史)。

🧭 三步上手 ​

步骤做什么
① 导入HBuilderX 中将插件导入 uni-app x 工程,组件经 easycom 自动注册,模板直接写 n-xxx 标签,无需导入语句
② 搭骨架页面用 n-page 起步:深浅主题自动挂载、原生滚动、常驻底栏与安全区自动处理
③ 接主题App.uvue 样式区(声明 scss)引入插件 styles 目录全局入口一次,即得全局主题类与全部设计令牌

深色跟随系统需在 manifest.json 开启暗黑支持(darkmode),未开启时恒为浅色; 原生导航栏 / tabbar 联动配合 theme.json 使用。

📦 组件矩阵(106 个) ​

各组件的详细教程(说明 / 平台兼容性 / 示例代码 / API 属性·事件·插槽表)在对应目录的 readme.md: uni_modules/new-ui/components/<组件名>/readme.md

🧱 基础 ​

组件能力
n-text原生 text 单根:色调/字号/加粗/装饰线,多行省略,可选中复制
n-tag状态小标签:五功能色 × 填充/镂空/浅色、胶囊/半圆标记、四档尺寸、可关闭
n-badge徽标 / 角标双形态:99+ 截断、圆点模式、骑角定位微调
n-avatar头像:插槽 / 图片 / 文字 / 图标四级回退,圆 / 方与三档尺寸或数值定制,功能色稳定配色,失败备份图与 error 事件
n-avatar-group头像组:叠放(重叠比例可调,+N 折叠)+ 拼合群组头像(单框 1/2/4/9 宫格铺成员小图)双形态
n-image图片:矩形 / 圆形画布,加载中 / 失败占位(插槽可替换),点击全屏预览(多图 + 起始下标),默认插槽叠放水印 / 角标,懒加载 / 淡入 / 长按菜单
n-icon599 个矢量图标内置离线可用,支持自有图标字体与图片模式
n-button原生 button 单根:6 类型 4 尺寸、镂空渐变加载节流,微信开放能力全集

📐 布局与页面 ​

组件能力
n-page页面骨架:原生滚动 + 底栏钉底 + 安全区垫高 + 自带主题,推荐作为所有页面起点
n-safe-area上下安全区真实高度占位,透明/实色/渐变背景与装饰插槽;与页面自动补偿明确互斥
n-gap间距块:三档高度、定高/随内容、左右内边距、上下外间距、背景圆角、默认插槽和点击回执
n-status-bar状态栏占位:系统高度、透明/实色/渐变背景、固定与等高占位、层级、装饰插槽及 init 高度回执
n-no-network无网络提示:自动监听断网,全屏不透明覆盖层(图形/图片 + 提示语 + 重试按钮),恢复自动隐藏,App 端附去设置入口
n-card卡片:头 / 体 / 底三段容器,缩略图 + 标题 + 右侧区头部,描边 / 投影 / 通栏形态,区域点击,媒体数据列表、字段映射、图片左右排列、来源与时间、逐项点击及按压反馈
n-grid宫格:等分列、方形 / 自适应高度、间距与边框、圆角、末行对齐与占位
n-grid-item宫格项:默认插槽、背景覆盖、按压反馈、业务标识与父子点击回传
n-row栅格行:24 分栏,排列/对齐/换行/列间距,响应式断点
n-col栅格列:占栏/空栏/视觉换位/断点(xs-sm-md-lg-xl 五档),与 n-row 配对
n-cell列表行:图标/标题/说明/值/箭头一行排开,设置页利器
n-list普通纵向列表:自然高度或限高滚动、固定行高窗口、8 个内容及状态插槽、原生刷新完整事件、触底分页衔接和稳定标识;复用单元格、加载提示与回顶按钮,stopRefresh/scrollToTop 类型明确直接调用
n-divider分割线:横向嵌字三段式(左/中/右位置、圆点极简、插槽图标与文字并排、虚实/粗细两档),竖向纯线分栏,定宽短分隔居中
n-data-tag数据驱动的标签选择:自动管理或绑定值的单选/多选,数量限制与互斥选项,保留业务对象、字段映射、禁用项和角标,支持主题与单行滚动组合
n-section分组标题栏:标题 + 描述 + 右侧操作区(#right 推到行尾),左侧装饰竖条(实色/渐变、圆头/方头、上下缩进与标题间距),标题与描述间距可单项调整,独立字重与行高、竖条负值外移,点击回传标题
n-steps步骤条:行向/竖向流程回显,已完成/当前/等待/错误四态,连线按段上色,图标/圆点/#icon 插槽三档节点,#title/#desc 作用域插槽富内容(item/index/status),逐项图标覆盖,行向平分居中、竖向步距连线连续
n-timeline时间轴:独立轴宽/左列宽/线宽、逐项线色与断轴;圆点/图标/自定义节点、left/content/right 插槽,文字样式通道;进度更新保留业务内容,实时完整代码复制
n-table表格:类型化嵌套列、固定表头与左右列、稳定排序、选择与禁用、图片/操作列、条件颜色;四插槽、主题令牌和完整示例代码
n-pagination分页器:全宽等分格(上一页/页码区/下一页),multi 数字页码(首末页+居中窗口+省略号)/ simple 简约页码,受控双事件通道,方向按钮插槽>文案>箭头三档,边界与禁用降透明拦截
n-collapse折叠面板:组容器,手风琴/多开双模式,name 数组受控 + change/open/close 事件,组外框描边
n-collapse-item折叠面板成员:标题行/说明/值/箭头(单元格同构)+ 高度过渡折叠区(内容常驻状态保留),禁用只锁收展,独立使用为布尔受控单面板,#title 作用域 + #icon/#value 插槽
n-skeleton骨架屏:头像/标题条/段落行声明式组合占位,末行自动收窄与数组逐行宽高,呼吸动画(页面隐藏/切后台停帧),loading 翻切真实内容
n-search搜索框:灰底圆角搜索条(前置分类 / 搜索图标 / 一键清除 / 右侧动作按钮),键盘搜索键触发 search,禁用态静态入口跳页
n-upload上传:图片九宫格 / 视频列表,数量·大小·扩展名校验,进度与失败重试,自动(返回体自动解析回填)/ 手动(afterRead + ref 回报)双模式,图片系统全屏预览 / 视频事件接管,删除可确认
n-tabs标签页:下划线/滑块指示条随选中项移动,角标与禁用项,配合轮播联动
n-swiper轮播图:list 驱动(字符串/对象数组键名映射)图片轮播,自动播放/衔接循环/手势滑切/卡片边距原生承接;卡片式露出(前后边距 + 非当前项缩放);指示器点/线/数字/标题/页码五形态(点按跳页)+ #default/#indicator 插槽整体接管;current 受控(越界钳制)、change/click 事件与 loading 覆盖态
n-segmented分段器:等分受控选择,卡片/描边/文字底线,业务字段映射、禁用、滑块、项插槽与图标布局
n-dropdown下拉菜单:筛选标题栏多列单开互斥,列型覆盖菜单/排序/开关/视图切换/筛选入口,coexist 选中值共存,选项列表与自定义面板插槽、透明遮罩点击即关,ref 编程控制
n-dropdown-item下拉菜单列:menu 面板选择 / sort 三态排序 / toggle 文字开关 / switch 图标二态 / filter 筛选入口;在 n-dropdown 内使用,值绑定选中态,面板限高滚动,选项数据整体判错
n-popover气泡提示与操作菜单:12 方位 + auto,items / content 插槽、独立遮罩关闭开关、动态尺寸适配、v-model:visible 受控
n-swipe-action滑动单元格组容器:成员注册与微信式单开互斥(auto-close),组级禁用与吸附距离,closeAll 一键收起,切页/切后台收起
n-swipe-action-item滑动单元格:direction 配置左滑或右滑展开主菜单,reverseOptions/reverseButton 反向菜单一行双向滑动,方向锁手势(横向跟手阻断滚动/纵向让位)、阻尼拖动、滞回吸附,可选 v-model、click/change/error 事件(side 区分菜单)、自动尺寸监听,button/reverseButton 插槽两侧接管
n-loadmore加载更多:status 三态(loadmore 点击翻页 / loading 指示器 / nomore 文字或圆点),三态均支持两侧线条,支持横竖排、轨道色与底部安全区,五种指示器与插槽旋转复用 n-loading,三态文案随语言包
n-index-list索引列表:v-model 控制索引,v-model:list 回写勾选;默认项支持主副文字/图片/复选框,标准行及逐组标题样式,item/section 插槽定制;header/footer 前后内容及独立固定,select/change/init/click 与触底事件,自动布局检测、scrollTo/refresh 方法
n-sticky粘性布局:Web / 微信原生吸附、App 事件定位,scrollViewId 指定局部容器;bounded 分组让位,change/error 与 default/content 插槽;默认调用无需滚动监听与测量
n-scroll-list横向滚动列表:scroll 开关与指示器独立,尺寸支持 px/rpx/% 和主题令牌;隐藏原生滚动条,底部滑动指示器随滚动位移,left/right 到边事件;内容放插槽自行排布,内容不足自动隐藏指示器
n-vtabs垂直选项卡:左侧分类轨道 + 右侧滚动内容区,双向滚动联动,图标/角标/禁用项
n-vtabs-content垂直选项卡内容分区:在 n-vtabs 内使用,自动注册分区及高度,支持异步内容重测
n-fab悬浮动作按钮:四角停驻、四向展开菜单、auto/free/none 拖拽,v-model:active 受控,trigger/item/default 插槽与微信能力回调
n-back-top返回顶部:页面滚动自动显隐与受控双模式,阈值/时长/形状/图标文字可配,n-page 底栏自动避让,default 插槽整钮替换
n-waterfall瀑布流:多列不等高排版,#item 插槽逐条渲染,新条目按实时列高放最短列(图片后加载自动纠正),v-model 数据源与 append/remove/update/clear 命令式方法双通道,头插重排回源序,readyKey 就绪门协调 end/init/error 事件,间距四面(gutter/leftGap/rightGap/itemGap)
n-navbar自定义导航栏:状态栏占位 + 返回箭头 + 标题 + 左右操作区,微信端避让胶囊,init 上报布局,fixed + placeholder 防塌陷,左右图标样式通道对称透传(几何守卫),left/center/right/default 四插槽
n-tabbar底部标签栏:list 驱动(对象数组或字符串数组简写)+ 受控切换(change 不回写即拦截),fixed + placeholder + 安全区,图标角标 / 红点 / 中间凸起按钮 / url 跳页,悬浮胶囊与标签模式,#item / #middle 插槽,init 高度回报 + getRect() 随时查询栏体几何

💬 弹层与反馈 ​

组件能力
n-popup通用弹层:五方向弹出、半屏档位面板、拖拽关闭、三插槽自由组装
n-modal对话框:标题/正文/确认取消,过渡与遮罩关闭内置
n-action-sheet动作面板:普通列表 / 单行与多行分享,card 圆角卡片 / line 满宽细线双外观,逐项禁用与加载、字段映射、六插槽、受控关闭与微信开放能力
n-toast轻提示:命令式 open/close,深色块(图标/加载圈 + 文案,三档定位)与顶部通知条双形态,八预设类型,单实例替换式
n-loading加载指示器:圆环(可带轨道)/半圆弧/花瓣/三点/三竖条五形态,JS 帧循环驱动行内样式(无 CSS 动画),text/插槽说明文字(图文横竖排),loading 关闭即停不空转
n-loading-page整屏加载页:不透明遮罩盖住页面,加载圈/品牌图 + 文案居中,show 受控
n-progress进度条:轨道 + 进度条铺满容器,percent 驱动动画(每 1% 毫秒可调、0 关),百分比文字随条滚动或条内悬浮(双层叠字对比色自动分割),label / text 插槽,实色 / 渐变进度色,pill / square 两档,activeend 到位事件
n-count-to数值插值与逐位滚轮:起止值、缓动、精度与格式字符、暂停续播、目标续接、页面隐藏冻结、点击与业务参数、整体插槽
n-countdown倒计时 / 累计计时:总时长与分单位输入、截止日期、上限、格式进位与前导零隐藏、真实毫秒、开始 / 暂停 / 继续 / 重置 / 结束,显隐补算、本次运行 / 本地恢复,整体 / 逐项插槽
n-circle-progress环形进度条:纯 view 半圆遮罩双弧(无 canvas),中心悬浮百分比(unit 可换)/ 插槽整位替换,起始角与顺逆时针,轨道随主题,activeend 到位事件
n-empty空状态:18 场景预设(14 空态 + 4 结果态兼作结果页),品牌淡盘/功能色实盘双视觉,场景文案随语言包,双行文案与操作区插槽,#icon 插画整位替换,贴屏垂直居中档

✏️ 表单与输入 ​

组件能力
n-input输入框:尺寸/边框/形状齐备,前后缀插槽、一键清除、字数统计
n-code-input验证码输入:分格显示 + 自动前进回退 + 粘贴整段填充,输满即发 finish 并收键盘;打码 / 下划线 / 发丝线形态,可关系统键盘搭自定义键盘,内置重发行倒计时重发闭环,clear / start / reset 方法
n-form表单容器:标签布局统一(位置/对齐/宽度)+ 规则校验 + 四通道错误展示,整表禁用透明遮罩
n-form-item表单行:标签 + 控件插槽 + 错误展示,条目级规则与布局覆盖表单级默认值
n-textarea多行输入框:auto-height 自动增高(height 即让位)、字数统计独立行、下划线/无边框双形态、聚焦光标/选区、hold-keyboard 防误触收起,与 n-input 同一套外观
n-picker选择器:触发器 + 自绘弹层(picker-view 滚轮 + 工具栏),select 单列/多列/级联(columns 形状自动识别,级联联动内置)+ date/time/region 四模式同根滚轮,触发器/弹层内插槽,确认回写、取消不落库
n-radio单选项:纯 CSS 自绘,独立受控或入组使用
n-radio-group单选组:统一管理成员选中值与整组禁用
n-checkbox复选项:方形盒 + 勾选形纯 CSS 自绘,半选形态,独立受控或入组使用
n-checkbox-group复选组:值数组统一管理成员选中集合与整组禁用
n-switch开关:完全受控(点击只派发目标值,异步确认不回写即不切)+ 轨道内文双形态 + loading 圆钮 + 圆钮内 #icon 图标插槽(作用域 checked)
n-number-box步进器:长按连发、固定小数位,整数空间运算无浮点误差
n-rate评分:点选/横滑、半星支持,星形/图标/插槽三档换形
n-slider滑块:单 / 区间双滑块,步进取整,横向 / 竖向、反向、防交叉,点按取值 + 拖动联动,数值回显,滑块插槽全定制
n-color色板点选:选中环 + 对勾,按色值亮度自适应黑白

🎯 选择器 ​

组件能力
n-cascader多级联动面板:层级 tab 逐级下钻、对勾回显
n-cascader-picker多级联动选择:触发器 + 底部弹层,选中回填完整路径
n-date-time-picker日期时间滚轮:大小月闰年自动处理,列间范围联动收紧
n-color-picker颜色选择:预设色板 + 色相滑杆取色 + 当前值回显
n-calendar日历:单选 / 多选 / 范围,单月 / 滑动 / 连续月份,年月快捷选择、农历、日期说明与角标;可组合 n-popup 使用草稿确认

⌨️ 虚拟键盘 ​

组件能力
n-keyboard-number虚拟数字键盘:支付金额、验证码录入免调系统输入法
n-keyboard-plate车牌键盘:省份 + 字母数字双页键区,停车缴费场景

🌗 主题 ​

组件能力
n-theme-provider主题容器:为任意子树装配完整主题变量集(小程序组件样式隔离下自带类定义),跟随全局主题同步切换;局部换肤走 custom-style 覆盖令牌

🧰 函数工具集 ​

微信小程序分包说明 ​

组件库为标准 easycom 源码结构,随使用者的项目由其本地编译器编译。若使用者的工程采用多分包且分包页面使用了本库组件,微信开发者工具「代码质量分析」可能出现「主包内不应存在主包未使用的JS文件」提示(列出组件附属模块文件)。成因是 uni-app x 编译器的分包放置策略(组件本体已随分包放置、附属依赖留在主包 uni_modules),并非组件库或使用方式问题;该提示为体积优化建议,不影响小程序的功能、预览、上传与发布。单分包工程不会出现。已在 HBuilderX 5.34 实测并向 DCloud 官方反馈,待编译器修复后自然消除。

函数用途
useTheme主题状态单例:跟随系统/浅色/深色三态切换,持久化保存,全局响应
useLocale语言状态单例:手选/跟随系统、运行时注册新语种、翻译取词
useFormat格式化纯函数:手机号/姓名/银行卡/邮箱脱敏,金额千分位两位小数
useSafeArea底部安全区单例:小白条/手势条高度,弹层垫底不再踩坑
useIconFont图标字体注册:接入自有 iconfont,注册后与内置图标同用法

🌗 深色模式,三种粒度 ​

粒度说明
跟随系统manifest 开启暗黑支持后自动跟随;原生导航栏 / tabbar 配合 theme.json 联动
手动切换浅色 / 深色 / 跟随系统三态任切,持久化保存,重启保留、跨页面生效
局部深色域某块区域独立深色(深色卡片、键盘面板):n-theme-provider 的 custom-style 整组覆盖中性色令牌(组件颜色全部走 var() 令牌,覆盖即生效)

实现机制为 CSS 变量双主题:深色主题只重定义中性色,组件全部取变量值——切换零闪烁、无多余节点。

🌍 国际化 ​

  • 组件内所有文案(含弹层按钮、键盘键)统一走语言包,简体中文、英文随库发行
  • 三层回退:手选语言 → 应用/系统语言 → 内置中文,任何缺失键都回落中文,界面永不出现裸键
  • 运行时注册新语种是正式扩展通道(标准 BCP 47 标签),库加密发行也不锁死语言
  • 与 vue-i18n 等方案可共存:监听应用语言变化同步给库即可,库不依赖任何 i18n 框架

🎨 主题定制,三层覆盖 ​

层级手段适用
运行时节点上直接写 CSS 变量动态换肤、局部微调
编译期工程全局样式覆盖令牌默认值整库品牌定制(主色、圆角、字号体系)
默认值库内置令牌表(styles/variable.scss,明文发行)直接使用,也是定制的参考底本

定制通道边界清晰:组件根节点用 custom-class / custom-style 命中;内部节点开放行内样式属性;插槽内容天然在页面作用域。哪些能改、怎么改,每个组件的文档写明白,不猜。

📱 支持环境 ​

环境支持
uni-app x(HBuilderX 5.26+)✔
App:Android / iOS✔
Web✔
微信小程序✔
经典 uni-app(vue2 / vue3)✘(组件为 .uvue 形态,仅面向 uni-app x)

⚠️ 已知限制 ​

  • 0.5px 发丝边框在部分 Android 设备上因屏幕密度取整,实际渲染为 1px(平台渲染特性,非实现缺陷)
  • App 端原生导航栏标题、tabbar 文字不受库内语言切换控制(平台限制),需应用自行调用 setNavigationBarTitle / setTabBarItem 同步

记录 · 思考 · 创作