更新记录

1.2.1(2026-09-26)

变更

  • 插件 ID 由 zui 更名为 zdd-zui(组件标签前缀 z- 不变),升级方式:删除旧 uni_modules/zui 后重新导入本插件,并将页面中 uni_modules/zui 引用路径批量替换为 uni_modules/zdd-zui

平台兼容性

uni-app(5.26)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.26)

Chrome Chrome插件版本 Safari Safari插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序 微信小程序插件版本
√ 1.2.1 √ 1.2.1 √ 1.2.1 √ 1.2.1 - √ 1.2.1

ZUI 高性能跨端组件库

基于 Vue3 Composition API 的轻量级 uniapp 组件库 —— 61 个组件,覆盖基础、表单、反馈、展示、导航、布局与高级业务场景。

  • 🚀 一键使用:标准 uni_modules + easycom,导入即写标签,无需 import、无需注册
  • 🎨 CSS 变量主题:一行换肤,任意容器加 zui-dark 类即刻切换暗黑模式
  • 📦 零外部依赖:内置 35 个矢量图标字体(base64 内嵌,无网络请求)
  • 🖥 全端兼容:H5 / App(Android、iOS)/ 微信、支付宝、百度、字节跳动、QQ 等小程序
  • ⚡ 函数式调用:toast() / showDialog() / showActionSheet() 随处可调
  • 🧩 高级业务组件:上传、轮播图、索引列表、侧边栏、宫格、滑动单元格、倒计时、环形进度、水印、悬浮按钮……

平台兼容

Vue3 H5 App(Android/iOS) 微信小程序 其他小程序
✓ ✓ ✓ ✓ ✓(支付宝/百度/字节/QQ 未逐一实测,欢迎反馈)

本组件库基于 <script setup> 语法,仅支持 Vue3 项目(HBuilderX 3.6+),不支持 Vue2 与 nvue 页面。

快速上手

1. 导入

在插件市场点击「使用 HBuilderX 导入插件」到你的项目,或手动复制 uni_modules/zdd-zui 到项目 uni_modules/ 目录。

2. 引入主题(推荐)

在 App.vue 中引入主题文件(不引入也能用,组件内置了默认值,引入后才能定制与切换暗黑模式):

<style lang="scss">
@import 'uni_modules/zdd-zui/theme/index.scss';

page {
  background: var(--z-bg);
  color: var(--z-text-1);
}
</style>

⚠️ 请不要把组件库内部路径写进 uni.scss(部分 HBuilderX 版本的 sass 注入编译无法解析 uni_modules 路径)。组件自身已通过相对路径自包含,无需任何额外导入。

3. 直接使用

<template>
  <z-button type="primary" block @click="onClick">主要按钮</z-button>
  <z-cell title="昵称" value="陌上花开" arrow clickable />
  <z-rate v-model="score" />
</template>

<script setup>
import { ref } from 'vue'
const score = ref(3)
const onClick = () => {}
</script>

若项目关闭了 easycom 自动扫描,请在 pages.json 中添加:

{
  "easycom": {
    "autoscan": true,
    "custom": {
      "^z-(.*)": "@/uni_modules/zdd-zui/components/z-$1/z-$1.vue"
    }
  }
}

4. 函数式调用(Toast / Dialog / ActionSheet)

第一步:在页面模板中放置一次挂载组件(每个需要用到的页面放一份):

<template>
  <view>
    <!-- 页面内容 -->
    <z-toast />
    <z-dialog />
    <z-action-sheet />
  </view>
</template>

第二步:任意位置调用:

import { toast, showDialog, showActionSheet } from '@/uni_modules/zdd-zui/libs/feedback'

toast('保存成功')                          // 纯文字
toast.success('操作成功')                  // 成功
toast.error('网络异常')                    // 失败
toast.loading('提交中...')                 // 加载(不自动关闭)
setTimeout(() => toast.hide(), 1500)

const ok = await showDialog.confirm('确定删除吗?')   // true / false
await showDialog.alert('只有确定按钮')

const idx = await showActionSheet(['拍照', '从相册选择'])  // 索引 / -1(取消)

⚠️ 命名注意:请在 <script setup> 中按上面示例命名导入(showDialog / showActionSheet)。若变量名与组件标签的驼峰形式同名(如 import { zDialog }),Vue 会把模板里的 <z-dialog> 编译为该变量,导致组件无法渲染。

组件总览

分类 组件
基础 z-button 按钮 · z-icon 图标 · z-image 图片 · z-badge 徽标 · z-tag 标签 · z-avatar 头像 · z-loading 加载
表单 z-input 输入框 · z-textarea 文本域 · z-search 搜索框 · z-checkbox 复选 · z-checkbox-group · z-radio 单选 · z-radio-group · z-switch 开关 · z-rate 评分 · z-slider 滑块 · z-stepper 步进器
反馈 z-popup 弹层 · z-dialog 对话框 · z-toast 轻提示 · z-action-sheet 动作面板 · z-progress 进度条 · z-skeleton 骨架屏 · z-empty 空状态
展示 z-card 卡片 · z-cell 单元格 · z-collapse 折叠面板 · z-collapse-item · z-steps 步骤条 · z-notice-bar 通知栏
导航 z-tabs 标签页 · z-navbar 导航栏 · z-backtop 返回顶部
布局 z-row 栅格行 · z-col 栅格列 · z-divider 分割线
高级 z-upload 上传 · z-swiper 轮播图 · z-index-list 索引列表 · z-sidebar 侧边栏 · z-sidebar-item · z-grid 宫格 · z-grid-item · z-countdown 倒计时 · z-circle-progress 环形进度 · z-load-more 加载更多 · z-segmented 分段器 · z-count-to 数字滚动
扩展 z-overlay 遮罩层 · z-fab 悬浮按钮 · z-swipe-cell 滑动单元格 · z-tabbar 底部标签栏 · z-tabbar-item · z-pagination 分页器 · z-popover 气泡 · z-read-more 文本展开 · z-watermark 水印 · z-highlight 高亮 · z-sticky 吸顶 · z-footer 页脚

基础组件

ZButton 按钮

<z-button type="primary">主要按钮</z-button>
<z-button type="success" plain round>朴素圆角</z-button>
<z-button icon="search" loading loading-text="加载中" />
<z-button block size="large" color="#7b61ff">块级自定义色</z-button>
Prop 类型 默认值 说明
type String primary primary / success / warning / danger / info / default
size String normal large / normal / small / mini
plain Boolean false 朴素按钮(描边)
round Boolean false 圆角按钮
block Boolean false 块级按钮
disabled Boolean false 禁用
loading Boolean false 加载状态
loading-text String '' 加载文案
icon String '' 图标名(见内置图标)
color String '' 自定义背景色(plain 时为描边色)
custom-style String/Object '' 自定义样式

事件:click(disabled/loading 时不触发)。支持透传 open-type 等原生 button 属性。

ZIcon 图标

<z-icon name="star" size="40" color="#ff9f18" />
Prop 类型 默认值 说明
name String '' 图标名
size String/Number '' 数字按 rpx
color String '' 颜色

内置图标:close check plus minus search star heart user home gear bell trash edit share location calendar clock photo eye lock phone info warning success error loading chevron-right chevron-down chevron-left chevron-up arrow-right arrow-down arrow-left arrow-up more,别名:clear refresh complete warn。

ZImage 图片

<z-image src="https://..." width="220" height="150" radius="16" />
Prop 类型 默认值 说明
src String '' 图片地址
mode String aspectFill 同原生 image mode
width / height String/Number '' 数字按 rpx
radius String/Number 0 圆角
lazy-load Boolean true 懒加载
fade Boolean true 加载完成淡入
show-menu-by-longpress Boolean false 长按识别小程序码

插槽:loading(加载占位)、error(失败占位);事件:load / error。

ZBadge 徽标

<z-badge :value="120" :max="99"><z-button size="small">消息</z-button></z-badge>
<z-badge dot><z-icon name="bell" size="44" /></z-badge>
Prop 类型 默认值 说明
value String/Number '' 数值
max String/Number 99 超出显示 max+
dot Boolean false 圆点模式
color String danger 背景色
offset Array [] 偏移 [x, y](rpx)

ZTag 标签

<z-tag type="success" plain closable @close="onClose">标签</z-tag>
Prop 类型 默认值 说明
type String primary 同 button type
size String medium large / medium / small
plain / round / mark Boolean false 朴素 / 圆角 / 右侧半圆
closable Boolean false 可关闭
color String '' 自定义颜色

事件:click / close。

ZAvatar 头像

<z-avatar src="https://..." size="88" />
<z-avatar icon="user" shape="square" bg-color="#00b578" />
<z-avatar text="Z" />
Prop 类型 默认值 说明
src String '' 图片地址
size String/Number 88 数字按 rpx
shape String circle circle / square
icon / text String '' 无图片时的图标/文字
bg-color String primary 背景色

ZLoading 加载

<z-loading text="加载中" />
<z-loading color="#00b578" text="垂直" vertical />
Prop 类型 默认值 说明
size String/Number 44 尺寸(rpx)
color String primary 颜色
text String '' 文案
vertical Boolean false 文案垂直排列

表单组件

ZInput 输入框

<z-input v-model="text" placeholder="请输入" clearable />
<z-input v-model="pwd" password prefix-icon="lock" placeholder="密码" />
<z-input v-model="tel" type="number" prefix-icon="phone" suffix-icon="info" />
Prop 类型 默认值 说明
v-model String/Number '' 输入值
type String text text / number / digit / idcard / nickname
password Boolean false 密码框
placeholder String 请输入 占位文案
disabled Boolean false 禁用
maxlength Number -1 最大长度
clearable Boolean false 清空按钮
border String outline outline / none
prefix-icon / suffix-icon String '' 前后图标

插槽:prefix / suffix;事件:input / focus / blur / confirm / clear / click-suffix。

ZTextarea 文本域

<z-textarea v-model="content" :maxlength="100" show-count auto-height />
Prop 类型 默认值 说明
v-model String/Number '' 输入值
maxlength Number -1 最大长度
show-count Boolean false 显示字数统计
auto-height Boolean false 自适应高度
disabled Boolean false 禁用

ZSearch 搜索框

<z-search v-model="keyword" action-text="搜索" @search="onSearch" />
Prop 类型 默认值 说明
v-model String/Number '' 关键词
shape String round round / square
clearable Boolean true 清空按钮
action-text String '' 右侧动作文字(空则不显示)

事件:search / clear / input。

ZCheckbox / ZRadio 复选与单选

<z-checkbox-group v-model="checked">
  <z-checkbox name="apple">苹果</z-checkbox>
  <z-checkbox name="banana" shape="circle">香蕉</z-checkbox>
  <z-checkbox name="grape" disabled>禁用</z-checkbox>
</z-checkbox-group>

<z-radio-group v-model="radio">
  <z-radio name="1">选项一</z-radio>
  <z-radio name="2">选项二</z-radio>
</z-radio-group>

Group:v-model(数组 / 值)、disabled、checked-color、direction(horizontal / vertical)。Item:name、shape(checkbox:square / circle)、disabled、label(也可用插槽)、label-disabled、checked-color。

ZSwitch 开关

<z-switch v-model="on" active-color="#00b578" />
Prop 类型 默认值 说明
v-model Boolean false 选中状态
loading Boolean false 切换中(异步场景)
active-color / inactive-color String primary / border 背景色
size String/Number 56 节点高度(rpx)

ZRate 评分

<z-rate v-model="score" allow-half />
<z-rate :model-value="3" readonly icon="heart" active-color="#f5455c" />
Prop 类型 默认值 说明
v-model Number 0 评分值
count Number 5 星星总数
allow-half Boolean false 半星
readonly / disabled Boolean false 只读 / 禁用
icon String star star / heart
size / gutter Number 44 / 8 尺寸与间距(rpx)

ZSlider 滑块

<z-slider v-model="val" show-tip :min="0" :max="100" :step="1" />
Prop 类型 默认值 说明
v-model Number 0 当前值
min / max / step Number 0 / 100 / 1 范围与步长
show-tip Boolean false 拖动时显示气泡
active-color / inactive-color String primary / bg 颜色

事件:change(拖动结束)/ dragging(拖动中)。

ZStepper 步进器

<z-stepper v-model="num" :min="1" :max="10" :step="0.5" />
Prop 类型 默认值 说明
v-model Number 0 当前值
min / max / step Number 1 / Infinity / 1 范围与步长
integer Boolean false 仅整数
disable-input Boolean false 禁止输入

事件:change / blur / plus / minus。


反馈组件

ZPopup 弹层(核心组件)

<z-popup v-model:show="show" position="bottom" round closeable>
  <view style="padding: 40rpx;">底部弹层内容</view>
</z-popup>
Prop 类型 默认值 说明
v-model:show Boolean false 显示状态
position String center center / top / bottom / left / right
round Boolean false 圆角
closeable Boolean false 关闭按钮
overlay Boolean true 遮罩
overlay-closable Boolean true 点遮罩关闭
z-index Number 10070 层级
duration Number 300 动画时长(ms)
safe-area-inset-bottom Boolean true 底部安全区
custom-style String/Object '' 内容区自定义样式

事件:open / opened / close / closed / click-overlay。

ZDialog 对话框(函数式)

import { showDialog } from '@/uni_modules/zdd-zui/libs/feedback'

await showDialog.alert('只有确定按钮')                       // Promise<true>
const ok = await showDialog.confirm('确定删除吗?', '删除确认') // Promise<true/false>
await showDialog({
  title: '自定义',
  content: '内容',
  showCancelButton: true,
  cancelText: '取消',
  confirmText: '确定'
})

页面需放置 <z-dialog />。支持默认插槽自定义内容。

ZToast 轻提示(函数式)

import { toast } from '@/uni_modules/zdd-zui/libs/feedback'

toast('纯文字')
toast.success('成功')       // toast.error / toast.warning / toast.info
toast.loading('加载中...')   // duration=0 不自动关闭
setTimeout(() => toast.hide(), 1500)
toast({ message: '顶部提示', position: 'top', duration: 3000, mask: true })

页面需放置 <z-toast />。type:text / success / error / warning / loading;position:top / center / bottom。

ZActionSheet 动作面板(函数式)

import { showActionSheet } from '@/uni_modules/zdd-zui/libs/feedback'

const idx = await showActionSheet({
  title: '选择上传方式',
  items: [{ name: '拍照' }, { name: '相册', subname: '从手机相册选择' }],
  cancelText: '取消'
})
// idx:点击项索引;点击取消/遮罩返回 -1

页面需放置 <z-action-sheet />。item 支持 name / subname / color / disabled。

ZProgress 进度条

<z-progress :percent="60" color="#00b578" pivot-text="已完成" />
Prop 类型 默认值 说明
percent Number 0 进度 0-100
stroke-width String/Number 14 粗细(rpx)
color / track-color String primary / bg 颜色
show-text Boolean true 显示文字
pivot-text String '' 自定义文字

ZSkeleton 骨架屏

<z-skeleton :loading="loading" avatar :row="3">
  <你的真实内容 />
</z-skeleton>
Prop 类型 默认值 说明
loading Boolean true 加载中显示骨架
avatar Boolean false 显示头像
title Boolean true 显示标题行
row Number 3 段落行数
row-width Array/String ['100%','100%','60%'] 行宽
animate Boolean true 流光动画

ZEmpty 空状态

<z-empty text="暂无订单" description="去逛逛看看想买的">
  <z-button size="small" round>去逛逛</z-button>
</z-empty>
Prop 类型 默认值 说明
icon String photo 图标名
text / description String 暂无数据 / '' 主/副文案
image-size String/Number 160 图标区域(rpx)

展示组件

ZCard 卡片

<z-card title="订单信息" shadow>
  <text>内容区域</text>
  <template #extra><z-tag size="small">进行中</z-tag></template>
  <template #footer><z-button size="mini" plain>查看详情</z-button></template>
</z-card>
Prop 类型 默认值 说明
title String '' 标题
padding String/Number 28 内容内边距(rpx)
shadow / border Boolean true / false 阴影 / 描边

插槽:title / extra / default / footer。

ZCell 单元格

<z-cell title="昵称" icon="edit" value="陌上花开" arrow clickable />
<z-cell title="地址" label="上海市浦东新区" arrow />
Prop 类型 默认值 说明
title / value / label String '' 标题/值/描述
icon String '' 左侧图标
arrow Boolean false 右箭头
clickable Boolean false 点击反馈
center Boolean false 垂直居中
required Boolean false 必填星号

插槽:icon / title / label / default(值区域)/ right-icon。

ZCollapse 折叠面板

<z-collapse v-model="opened">
  <z-collapse-item title="什么是 ZUI?" name="1">内容</z-collapse-item>
  <z-collapse-item title="禁用项" name="2" disabled>内容</z-collapse-item>
</z-collapse>

Collapse:v-model(数组,accordion 模式为单值)、accordion。Item:name、title、label、value(右侧附加文字)、disabled。

ZSteps 步骤条

<z-steps :items="[{ title: '下单' }, { title: '付款', desc: '已支付' }]" :current="1" />
<z-steps :items="items" :current="2" direction="vertical" />
Prop 类型 默认值 说明
items Array [] [{ title, desc }]
current Number 0 当前步骤索引
direction String horizontal horizontal / vertical
active-color String primary 激活色

ZNoticeBar 通知栏

<z-notice-bar text="超长通知自动滚动播放" left-icon="bell" closeable />
Prop 类型 默认值 说明
text String '' 通知内容
scrollable Boolean/String 'auto' true / false / 'auto'(溢出才滚动)
speed Number 50 滚动速度 px/s
color / background String warning / #fff8ec 颜色
left-icon String bell 左侧图标
closeable Boolean false 可关闭

事件:close / click。


导航组件

ZTabs 标签页

<z-tabs v-model="tab" :list="['关注', '推荐', '热榜']" @change="onChange" />
<z-tabs v-model="tab2" :list="list" :line-width="48" active-color="#00b578" />
Prop 类型 默认值 说明
v-model Number 0 当前索引
list Array [] ['标签'] 或 [{ title }]
line-width String/Number 'auto' 下划线宽度('auto' 匹配文字)
color / active-color String text-2 / primary 文字颜色
item-min-width String/Number '' 单项最小宽度

事件:change / click。激活项自动滚动到可视区。

ZNavbar 导航栏(自定义导航栏)

<!-- 常规 -->
<z-navbar title="标题" @left="onBack" />

<!-- 透明沉浸模式:滚动后自动变实色(页面需 navigationStyle: custom) -->
<z-navbar title="详情" transparent :scroll-top="scrollTop" :auto-threshold="80" show-home />
Prop 类型 默认值 说明
title String '' 标题
left-arrow Boolean true 返回箭头(仅存在上级页面时显示)
show-home Boolean false 无上级页面时显示首页按钮
home-path String /pages/index/index 首页路径
fixed / placeholder Boolean true 固定顶部 / 生成占位
transparent Boolean false 沉浸透明模式
scroll-top Number 0 页面滚动距离(配合 onPageScroll)
auto-threshold Number 80 透明→实色阈值(px)
background / color String bg-2 / text-1 颜色
border Boolean true 底部细线(透明模式不显示)

插槽:left / right / default(标题);事件:left / home(未监听时执行默认返回/回首页)。

页面开启自定义导航:pages.json 对应页面加 "navigationStyle": "custom"。

ZBacktop 返回顶部

<z-backtop :scroll-top="scrollTop" :threshold="300" />

页面 onPageScroll 中把 e.scrollTop 传给 scroll-top。点击自动 pageScrollTo(0)。


布局组件

ZRow / ZCol 栅格

<z-row gutter="16">
  <z-col :span="12"><view>左</view></z-col>
  <z-col :span="6" :offset="6"><view>右</view></z-col>
</z-row>

Row:gutter(列间距 rpx)、justify(start/center/end/space-between/space-around)、align(top/center/bottom)、wrap。Col:span(1-24)、offset。

ZDivider 分割线

<z-divider>文字</z-divider>
<z-divider dashed>虚线</z-divider>
<z-divider vertical />

高级组件

ZUpload 上传

<!-- 图片上传(配置 action 后自动上传) -->
<z-upload v-model="files" accept="image" action="https://api/upload" :max-count="5" @success="onOk" />

<!-- 文件上传 -->
<z-upload v-model="docs" accept="file" :max-count="3" />

<!-- 完全自定义上传 -->
<z-upload v-model="files" :custom-upload="uploadFn" />
Prop 类型 默认值 说明
v-model Array [] 文件列表 [{ url, name, status, progress }]
accept String image image / file
max-count Number 9 最大数量
max-size Number 10 单文件上限(MB)
action String '' 上传接口(空则仅本地预览)
name / header / formData — file / {} uni.uploadFile 参数
custom-upload Function null (file, index) => Promise 自定义上传
source-type Array ['album','camera'] 图片来源
deletable / preview-full-image Boolean true 删除 / 大图预览

事件:change / success / fail / progress / oversize / delete。文件状态:loading(含进度与重试)/ done / failed(点击重试)。

ZSwiper 轮播图

<z-swiper :list="['https://...a.jpg', { image: 'https://...b.jpg', title: '标题' }]" :height="320" :radius="16" />

<!-- 自定义 slide -->
<z-swiper indicator="line">
  <swiper-item>...</swiper-item>
</z-swiper>
Prop 类型 默认值 说明
list Array [] ['url'] 或 [{ image, title }]
autoplay / circular Boolean true 自动播放 / 循环
interval / duration Number 3000 / 500 间隔与动画(ms)
indicator String dots dots / line / none
indicator-color / indicator-active-color String 白色系 指示点颜色
height / radius String/Number 340 / 0 高度与圆角(rpx)

事件:change(index) / click(index, item)。

ZIndexList 索引列表

<z-index-list :list="cityList" height="100vh" @select="">
  <template #item="{ item }">
    <text>{{ item }}</text>
  </template>
</z-index-list>
Prop 类型 默认值 说明
list Array [] [{ letter: 'A', items: [] }]
index-list Array 取 list 的 letter 右侧索引字母
height String/Number 100vh 滚动区高度

内置右侧索引条(触摸滑动定位)、中央字母提示。事件:select(item)。

ZSidebar / ZSidebarItem 侧边栏

<view style="display: flex; height: 600rpx;">
  <z-sidebar v-model="active">
    <z-sidebar-item v-for="c in cats" :key="c" :title="c" :dot="c === '热卖'" />
  </z-sidebar>
  <view style="flex: 1;">右侧内容区(随 active 切换)</view>
</view>

Sidebar:v-model(索引)。Item:title、disabled、dot、badge、active-color。

ZGrid / ZGridItem 宫格

<z-grid :columns="4">
  <z-grid-item v-for="(g, i) in list" :key="i" @click="onClick(i)">
    <z-icon :name="g.icon" size="40" />
    <text>{{ g.name }}</text>
  </z-grid-item>
</z-grid>

Grid:columns(列数)、border(边框,自动隐藏末列右框)。Item:clickable、事件 click(index)(index 为注册顺序)。

ZCountdown 倒计时

<z-countdown :time="7200 * 1000" format="HH:mm:ss" @finish="onFinish" />
<z-countdown :time="90000" format="mm:ss" />
Prop 类型 默认值 说明
time Number 0 时长(毫秒)
format String HH:mm:ss 支持 DD / HH / mm / ss,其余字符为分隔符
autostart Boolean true 自动开始

事件:finish / change(remain);实例方法 start() / stop()。

ZCircleProgress 环形进度

<z-circle-progress :rate="72" :size="160" />
<z-circle-progress :rate="45" color="#00b578" text="完成" />
Prop 类型 默认值 说明
rate Number 0 进度 0-100
size / stroke-width Number 200 / 16 直径 / 环宽(rpx)
color / track-color / fill String primary / bg / bg-2 颜色
text String '' 中心文字(默认百分比)

基于 conic-gradient 实现,无 canvas 依赖。支持插槽自定义中心内容。

ZLoadMore 加载更多

<z-load-more :status="status" @loadmore="loadNext" />
Prop 类型 默认值 说明
status String loadmore loadmore / loading / nomore
line Boolean true 两侧分割线

点击 loadmore 状态时触发 loadmore 事件。

ZSegmented 分段器

<z-segmented v-model="tab" :options="['日', '周', '月']" />
<z-segmented v-model="type" :options="[{ label: '全部', value: 0 }]" active-color="#00b578" />

滑动指示块动画;事件:change(value, index)。

ZCountTo 数字滚动

<z-count-to :end="128450" :duration="2000" font-size="48" />
Prop 类型 默认值 说明
start / end Number 0 起止值
duration Number 1500 动画时长(ms)
decimals Number 0 小数位
separator Boolean true 千分位

事件:end;实例方法 play() / stop()。


扩展组件

ZOverlay 遮罩层

<z-overlay :show="show" @click="show = false">可插入内容</z-overlay>
Prop 类型 默认值 说明
show Boolean false 显示
z-index Number 1000 层级
opacity String/Number '' 遮罩透明度
duration Number 300 动画时长

ZFab 悬浮按钮

<z-fab :actions="[{ icon: 'camera', text: '拍照' }, { icon: 'photo', text: '相册' }]" @select="" />
<z-fab icon="plus" @click="onClick" />
Prop 类型 默认值 说明
icon / color — plus / primary 主按钮
actions Array [] 子动作 [{ icon, text }],点击主按钮展开
offset Array [40, 140] 位置偏移 [right, bottom](rpx)

事件:click(主按钮)/ select(index, action)。

ZSwipeCell 滑动单元格

<z-swipe-cell>
  <z-cell title="左滑显示操作" value="内容" />
  <template #right>
    <view class="btn" @click="del">删除</view>
  </template>
</z-swipe-cell>

插槽:left / right / default。支持触摸跟手、阻尼回弹、点击内容收回;v-model(false / true / 'right')、实例方法 close()。

ZTabbar / ZTabbarItem 底部标签栏

<z-tabbar v-model="tab">
  <z-tabbar-item title="首页" icon="home" />
  <z-tabbar-item title="购物车" icon="star" :badge="6" />
  <z-tabbar-item title="我的" icon="user" />
</z-tabbar>

Tabbar:v-model、fixed / placeholder(默认 true,自动安全区)、border、active-color / inactive-color。Item:title、icon、dot、badge、icon 插槽(含 active 状态)。

ZPagination 分页器

<z-pagination v-model="page" :total-items="100" :items-per-page="10" @change="onChange" />

也支持直接传 page-count。自动生成省略号页码。

ZPopover 气泡

<z-popover content="气泡内容" placement="top" theme="dark">
  <z-button size="small">点击我</z-button>
</z-popover>
Prop 类型 默认值 说明
content String '' 内容(也可用 content 插槽)
placement String top top / bottom
theme String dark dark / light
v-model:show Boolean false 显示状态

ZReadMore 文本展开

<z-read-more :lines="2">{{ 长文本 }}</z-read-more>
Prop 类型 默认值 说明
lines Number 2 收起时行数
expand-text / collapse-text String 展开 / 收起 按钮文字

事件:expand / collapse。

ZWatermark 水印

<z-watermark content="仅供演示" :opacity="0.06" />
Prop 类型 默认值 说明
content String '' 水印文字
opacity Number 0.08 透明度
rotate Number -20 旋转角度
fullscreen Boolean true 覆盖全屏(false 时覆盖父容器)
font-size / color / z-index — 26 / text-1 / 9999 样式

ZHighlight 高亮

<z-highlight text="ZUI 轻量级跨端组件库" keywords="跨端" />
<z-highlight :text="title" :keywords="['ZUI', '组件']" color="#00b578" />

ZSticky 吸顶

<z-sticky :offset-top="0">
  <view>滚动到顶部时吸附</view>
</z-sticky>
Prop 类型 默认值 说明
offset-top Number 0 吸附距离(px)

ZFooter 页脚

<z-footer copyright="© 2026 ZUI">
  <text>关于</text>
  <text>协议</text>
</z-footer>

主题定制

覆盖 CSS 变量

/* App.vue 中 theme/index.scss 之后 */
page {
  --z-primary: #7b61ff;
  --z-radius-md: 12rpx;
}

暗黑模式

在页面根容器加 zui-dark 类,整个子树自动切换:

<template>
  <view :class="{ 'zui-dark': dark }">
    <!-- 所有 ZUI 组件随之切换 -->
  </view>
</template>

变量清单

颜色    --z-primary --z-success --z-warning --z-danger --z-info
文字    --z-text-1 --z-text-2 --z-text-3 --z-text-white
背景    --z-bg --z-bg-2 --z-border --z-mask
圆角    --z-radius-sm --z-radius-md --z-radius-lg --z-radius-round
阴影    --z-shadow --z-shadow-lg

常见问题

Q:调用 toast() 没反应? 页面模板中需要放置一次 <z-toast />(<z-dialog />、<z-action-sheet /> 同理)。未放置时调用会在控制台输出警告。

Q:sass 报 "Can't find stylesheet to import"? 不要在 uni.scss 中 @import 'uni_modules/...'。组件已自包含;如需 SCSS 变量,请在对应文件的 <style lang="scss"> 中 @import '@/uni_modules/zdd-zui/theme/var.scss';。

Q:对话框/动作面板不显示? 检查 <script setup> 中导入的函数名是否为 showDialog / showActionSheet。若变量名与组件标签的驼峰形式同名(如 zDialog),Vue 会把 <z-dialog> 标签编译为该变量导致组件无法渲染。

Q:修改后不生效? HBuilderX 的编译缓存可能滞后,请删除项目 unpackage 目录后重新运行。

更新日志

详见 changelog.md。

许可证

MIT,可免费商用。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

相机,文件

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。