更新记录
1.4.0(2026-11-10)
概述
本版本在 1.3.0 基础上大幅扩充组件与能力面:补齐评分、步骤条、浮球、指引、轮播、索引、浮动面板、安全验证、条形码等;强化二维码 / 返回顶部 / 日历 / 键盘;落地国际化与宽屏;全面标注组件参数注释与作者信息;优化真机蒸汽模式下的动效与样式兼容。
一、新增组件
| 组件 | 说明 |
|---|---|
yk-rate |
评分:整星 / 半星、只读、可清空、自定义图标色 |
yk-steps |
步骤条:横向左右半线对接、纵向连接线、完成/进行中/等待/异常态 |
yk-float-ball |
悬浮球:可拖拽、边缘吸附回弹、徽标 / 红点、高层级防遮挡 |
yk-guide |
新手指引:遮罩 + 分步卡片,支持跳过 / 上一步 / 下一步 / 完成 |
yk-view-more |
查看更多:文本折叠 / 列表折叠,文案走 i18n |
yk-container |
宽屏容器:断点限宽居中,配合 widescreen 工具 |
yk-security |
滑动安全验证:进度跟手、成功铺满变色、失败回弹、可重置 |
yk-barcode |
条形码:Code39 编码,模块条渲染,可自定义色宽 |
yk-radio / yk-radio-group |
单选框 / 单选组:圆点绝对居中,兼容真机 |
yk-swiper |
多功能轮播:自动播放、指示器、卡片露边、纵向 |
yk-index-list |
索引列表:A–Z 侧栏、实测热区点击、锚点滚动、中间气泡 |
yk-floating-panel |
浮动面板:多档高度吸附、拖拽跟手(拖动时关闭 height 过渡) |
二、组件增强
二维码 yk-qrcode
- 定位角 + 时序线 + 对齐图案 + 数据区伪编码
- 支持
version(21/25/29)、ecl密度、rounded圆角点 - 支持
theme="primary"、中心 Logo / 中心文字 - 操作区:复制 / 刷新 / 反色;长按复制
- 边框、提示文案、
showActions可配
返回顶部 yk-back-top
- 模式:
light/primary/dark - 支持
iconName(yk-icon)、图片图标、箭头兜底 - 可选滚动进度环与百分比
- 方形 / 圆形;自定义背景与颜色
日历 yk-calendar
type="single" | "range"单选 / 范围popup弹层或内嵌weekStartsOn周日 / 周一起始markDays标记日(字符串或{ date, color })- 主题色、最小最大日期、回到今天
键盘 yk-keyboard
- 模式:
number/digit/idcard/car/custom - 车牌键盘:省份简称 ↔ 字母数字,新能源 8 位
- 默认不在键盘面板展示输入内容(页面自行展示 v-model)
- 长按连续删除、按键震动、侧栏删除 / 完成布局
- 已移除快捷金额条
复选框 yk-checkbox
- 对勾改为边框旋转单元素 + 绝对居中,修复真机贴左上
通知栏 yk-notice-bar
- 蒸汽模式用
translateX定时器跑马灯(不用 CSS keyframes)
TabBar yk-tabbar
- 选中动效用 style + transition,结束强制
transform:none - 连点先清空再播,避免图标错位
Toast(libs/toast.uts)
- App 纯文字默认
position: bottom,避免真机偏上
步骤条连线
- 横向改为「左半线 + 圆点 + 右半线」,间隔线可连续对接
浮球回弹
- 默认
zIndex: 10080,避免被页面内容遮挡 - 松手先过冲再吸附,弹性过渡更好
浮动面板拖拽
- 拖拽中关闭 height 过渡,高度跟手并实时
update:height
索引列表
- 侧栏加宽、完整 A–Z、实测 boundingClientRect 定位,点击更准
三、国际化(i18n)
新增 libs/locale.uts:
| API | 说明 |
|---|---|
initYkLocale |
启动初始化(缓存 / 系统语言) |
setYkLocale / getYkLocale |
设置 / 读取语言 |
t(key, params?) |
取文案,支持 {name} 占位 |
addYkLocaleMessages |
合并扩展文案 |
- 内置 zh-CN / en-US
- 指引、查看更多、安全验证、步骤、条码等文案走
t() main.uts已调用initYkLocale()- Demo:接口页 →「国际化/宽屏」
四、宽屏(Widescreen)
新增 libs/widescreen.uts + yk-container:
| API | 说明 |
|---|---|
initYkWidescreen |
初始化强制模式缓存 |
isYkWideScreen |
是否宽屏(默认断点 960) |
getYkWideClass |
yk_wide / yk_narrow |
getYkContainerStyle |
限宽居中内联样式 |
setYkWideForce |
强制 wide / narrow / 跟随窗口 |
package.json声明:i18n: y、widescreen: y、darkmode: y- 样式补充
.yk_wide/.yk_narrow/.yk_page_wide_inner
五、工程与规范
- 全部 54 个组件补充:
@version 1.4.0@author yangkangProps逐参数/** 注释 */
- 主壳「接口 / 关于」页清理不可点击假宫格,关于改为只读信息 + 可点主题设置
- Demo 导航 /
pages.json注册新组件演示页 - 蒸汽模式 CSS 兼容:避免
max-width: %、避免不支持的嵌套选择器与 keyframes 依赖
六、已知说明
yk-qrcode为轻量矩阵示意,生产扫码请接服务端出图或完整算法包yk-barcode为 Code39,非法字符会跳过- 页面滚动统一原生滚动,不使用
scroll-view(索引列表依赖pageScrollTo)
平台兼容性
uni-app(5.26)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.26)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| √ | √ | √ | × |
面向 uni-appX + Vue3 + UTS + 蒸汽模式(Vapor) 的跨端 UI 组件库。
- 作者:yangkang
- 版本:1.4.0
- 分发方式:
uni_modules+ easycom - 主题色:绿色系(
#07c160) - 能力声明:暗黑模式 ✅ · 国际化 ✅ · 宽屏 ✅
适用端:Android · iOS · 鸿蒙 NEXT · WEB · 微信小程序(以 package.json platforms 为准)。
目录
特性
| 特性 | 说明 |
|---|---|
| 蒸汽模式友好 | .uvue + UTS;动效多用 transform / 定时器,避免依赖不兼容的 CSS keyframes |
| 绿色主题 | CSS 变量 + yk_theme_light / yk_theme_dark |
| easycom | yk-* 自动引入,无需在页面手动 import 组件 |
| 表单完备 | 步进器、开关、复选、单选、验证码、上传、日历、时间、级联、键盘、签名 |
| 业务组件 | 浮球、指引、安全验证、车牌键盘、索引列表、浮动面板、轮播等 |
| 工程化工具 | Toast / Modal / 请求 / 存储 / 路由 / 事件总线 / 上传 / 图片 CDN |
| i18n | 内置 zh-CN / en-US,可扩展 |
| 宽屏 | 断点检测 + yk-container 限宽居中 |
| 注释规范 | 每个组件含 @version / @author yangkang,Props 逐参数注释 |
安装与接入
1. 放入工程
将本插件目录放到:
你的项目/uni_modules/yk-ui/
2. 配置 easycom(pages.json)
{
"easycom": {
"autoscan": true,
"custom": {
"^yk-(.*)": "@/uni_modules/yk-ui/components/yk-$1/yk-$1.uvue"
}
}
}
3. 引入全局样式(App.uvue)
@import '@/uni_modules/yk-ui/libs/style/index.css';
WEB 端也可在 main.uts 中额外 import 同一份 CSS。
4. 初始化(推荐在 main.uts)
import App from './App.uvue'
import { createSSRApp } from 'vue'
import {
setYkUiConfig,
initYkTheme,
initYkLocale,
initYkWidescreen
} from '@/uni_modules/yk-ui'
// #ifdef WEB
import '@/uni_modules/yk-ui/libs/style/index.css'
// #endif
export function createApp() {
const app = createSSRApp(App)
setYkUiConfig({
imgBaseUrl: 'https://cdn.example.com',
baseUrl: 'https://api.example.com',
uploadUrl: '/api/upload'
} as UTSJSONObject)
initYkTheme() // 主题(跟随系统 / 本地缓存)
initYkLocale() // 国际化
initYkWidescreen() // 宽屏
return { app }
}
5. 页面根节点挂主题 class
<view class="yk_page" :class="themeClass">
<!-- 内容 -->
</view>
import { getYkThemeClass } from '@/uni_modules/yk-ui'
const themeClass = ref(getYkThemeClass())
快速开始
模板
<view class="yk_page yk_theme_light">
<yk-navbar title="示例" />
<yk-button type="primary" text="提交" @click="onSubmit" />
<yk-cell-group title="设置">
<yk-cell title="消息通知" :isLink="true" />
</yk-cell-group>
<yk-modal />
</view>
脚本
import { showConfirm, showToast, setYkTheme } from '@/uni_modules/yk-ui'
async function onSubmit(): Promise<void> {
const res = await showConfirm('确认提交?')
if (res.confirm) {
showToast('已提交')
}
}
主题
CSS 变量
主题样式定义于 libs/style/variables.css,页面挂载:
yk_theme_light浅色yk_theme_dark深色
常用变量示例:--yk-primary、--yk-bg、--yk-bg-2、--yk-text、--yk-border 等。
API
| 方法 | 说明 |
|---|---|
initYkTheme() |
启动时初始化(读缓存 / 跟随系统) |
setYkTheme('light' \| 'dark') |
手动切换并关闭跟随系统 |
setYkThemeFollowSystem(true) |
恢复跟随系统 |
getYkTheme() |
当前模式 |
getYkThemeClass() |
返回 class 名 |
isYkThemeDark() |
是否深色 |
checkSystemTheme() |
读取系统主题 |
国际化
文件:libs/locale.uts
API
| 方法 | 说明 |
|---|---|
initYkLocale(fallback?) |
初始化,优先本地缓存,其次系统语言 |
setYkLocale('zh-CN' \| 'en-US' \| …) |
切换语言并持久化 |
getYkLocale() |
当前语言 |
t(key, params?) |
取文案;params 可替换 {name} 等占位 |
addYkLocaleMessages(locale, messages) |
合并业务文案 |
示例
import { setYkLocale, t } from '@/uni_modules/yk-ui'
setYkLocale('en-US')
const tip = t('guide.next') // Next
const msg = t('rate.value') // Rate
内置文案键(部分)
common.confirm / common.cancel / common.loading / common.empty
guide.next / guide.prev / guide.skip / guide.done
viewMore.expand / viewMore.collapse
security.tip / security.success / security.fail / security.reset
barcode.empty / steps.wait / steps.process / steps.finish / steps.error
宽屏适配
文件:libs/widescreen.uts · 组件:yk-container
| 常量 / 方法 | 说明 |
|---|---|
YK_WIDE_BREAKPOINT |
默认断点 960px |
YK_CONTENT_MAX_WIDTH |
内容最大宽 1080px |
isYkWideScreen(bp?) |
是否宽屏 |
getYkWideClass() |
yk_wide / yk_narrow |
getYkContainerStyle(max?) |
限宽居中 style |
setYkWideForce('wide'\|'narrow'\|'') |
强制模式(空=跟随窗口) |
<view class="yk_page" :class="wideClass">
<yk-container :maxWidth="1080">
<!-- 业务内容 -->
</yk-container>
</view>
import { getYkWideClass } from '@/uni_modules/yk-ui'
const wideClass = ref(getYkWideClass())
注意:uvue 中
max-width不支持百分比,请使用px数值(容器已按此处理)。
图标
- 字体:
static/font/ykicon.ttf - 映射:
libs/icons.uts(内置 100+,如search/home/plus/star/arrow-right…)
<yk-icon name="search" size="22px" color="#07c160" />
<yk-icon name="loading" :spin="true" />
从 iconfont.cn 扩展
- 新建项目并添加图标,下载 Font class / Unicode
- 覆盖或新增
.ttf到static/font/ - 注册映射:
import { registerYkIcons } from '@/uni_modules/yk-ui'
import type { YkIconItem } from '@/uni_modules/yk-ui'
registerYkIcons([
{ name: 'my-icon', code: '\ue001' } as YkIconItem
] as YkIconItem[])
工具库 API
入口:import { … } from '@/uni_modules/yk-ui'
配置 / 图片
| API | 说明 |
|---|---|
setYkUiConfig / getYkUiConfig |
CDN、接口基址、上传路径等 |
getYkToken |
读取本地 token |
getFullImgUrl |
拼接完整图片 URL |
反馈
| API | 说明 |
|---|---|
showToast / showSuccess / showError / hideToast |
轻提示(App 纯文字默认底部) |
showLoading / hideLoading |
加载中 |
showModal / showAlert / showConfirm / showDangerConfirm / showSuccessAlert / showPrompt / hideModal |
弹窗 |
网络 / 上传
| API | 说明 |
|---|---|
request / get / post / put / del |
请求 |
setRequestInterceptor / setResponseInterceptor |
拦截器 |
upload |
上传封装 |
存储 / 路由 / 事件
| API | 说明 |
|---|---|
setStorage / getStorage / setStorageJSON / getStorageJSON / removeStorage / clearStorage / hasStorage |
本地存储 |
navigateTo / redirectTo / reLaunch / switchTab / navigateBack / buildQuery |
路由 |
on / once / emit / off |
事件总线 |
EVENT_* |
预置事件名常量 |
通用工具
rpx2px / px2rpx / getWindowWidth / getWindowHeight / getStatusBarHeight
padZero / formatDate / sleep / clamp / isEmpty / uuid
copyText / getClipboard / makePhoneCall
动画辅助
ykSpinLoop / ykStopLoop / ykAnimateById / ykTabSelectAnim / ykAnimId
条码工具
encodeCode39 / mergeBarcodeModules
组件一览与用法
所有组件均标注
@version 1.4.0·@author yangkang。
下列为常用 Props 摘要,完整参数见各组件源码内注释。
基础
| 组件 | 用途 | 常用 Props / 说明 |
|---|---|---|
yk-icon |
图标 | name size color spin |
yk-button |
按钮 | type size text icon plain loading disabled block shape |
yk-tag |
标签 | type plain closeable |
yk-badge |
徽标 | 数字 / 红点,常包裹子节点 |
yk-cell / yk-cell-group |
单元格 | title value isLink group.title |
yk-divider |
分割线 | 文案居中 / 左右 |
yk-progress |
进度条 | 百分比、颜色 |
yk-loading |
加载动画 | ring / spinner / dots / pulse 等 |
yk-empty |
空状态 | text desc image icon showBtn |
yk-skeleton |
骨架屏 | type list/card、rows avatar animate |
yk-load-more |
加载更多 | status more/loading/nomore/error |
yk-notice-bar |
通知栏 | type text scrollable closeable link |
yk-countdown |
倒计时 | 时间控制、格式化 |
yk-search |
搜索框 | v-model、确认搜索 |
yk-rate |
评分 | v-model count allowHalf readonly |
yk-steps |
步骤条 | active list direction row/column |
yk-view-more |
查看更多 | mode text/list、rows、展开收起 |
yk-container |
宽屏容器 | maxWidth breakpoint |
<yk-button type="primary" text="提交" />
<yk-rate v-model="score" :allowHalf="true" />
<yk-steps :active="1" :list="stepList" />
导航与布局
| 组件 | 用途 | 常用 Props / 说明 |
|---|---|---|
yk-navbar |
导航栏 | title showBack 渐变/搜索等 |
yk-tabs |
选项卡 | 指示条、内容联动 |
yk-tabbar |
底部标签栏 | list theme effect midButton 路由 |
yk-collapse / item |
折叠面板 | 手风琴 / 多开 |
yk-drawer |
抽屉 | 方位、遮罩关闭 |
yk-waterfall |
瀑布流 | 双列流式布局 |
yk-back-top |
返回顶部 | scrollTop mode showProgress |
yk-float-ball |
浮球 | 拖拽吸附、badge、zIndex |
yk-guide |
新手指引 | v-model:show steps |
yk-swiper |
轮播 | list autoplay card vertical |
yk-index-list |
索引列表 | list nameKey indexKey fullIndex |
yk-floating-panel |
浮动面板 | v-model:show anchors 拖拽跟手 |
<yk-float-ball icon="plus" badge="3" @click="onFab" />
<yk-guide v-model:show="showGuide" :steps="guideSteps" />
<yk-swiper :list="banners" :height="160" :card="true" />
表单
| 组件 | 用途 | 常用 Props / 说明 |
|---|---|---|
yk-form / yk-form-item |
表单校验 | 规则、错误提示 |
yk-stepper |
步进器 | min max step 长按 |
yk-switch |
开关 | v-model size 文案 |
yk-checkbox / group |
复选 | v-model / name max |
yk-radio / group |
单选 | v-model name |
yk-code-input |
验证码格 | 位数、密文 |
yk-upload |
上传 | 多图、预览 |
yk-calendar |
日历 | single/range、标记日、内嵌 |
yk-datetime-picker |
日期时间 | 模式 / 年份 / 步进 |
yk-cascader |
级联 | 多级选项 |
yk-keyboard |
键盘 | number/digit/idcard/car,默认不展示输入区 |
yk-signature |
签名板 | Canvas 手写 |
yk-security |
滑动验证 | 阈值、成功/失败回调 |
<!-- 金额:页面自己展示 value,键盘不回显 -->
<text>¥{{ amount }}</text>
<yk-keyboard v-model:show="showKb" v-model="amount" mode="number" />
<!-- 车牌 -->
<yk-keyboard v-model:show="showPlate" v-model="plate" mode="car" :newEnergy="true" />
反馈与展示
| 组件 | 用途 | 常用 Props / 说明 |
|---|---|---|
yk-modal |
弹窗宿主 | 配合 showConfirm 等 API |
yk-offline |
无网络 | 断网提示、恢复事件 |
yk-pull-refresh |
下拉刷新 | 置于 navbar 下方;可关成功文案 |
yk-qrcode |
二维码示意 | value version theme rounded 复制/反色 |
yk-barcode |
Code39 条码 | value moduleWidth color |
yk-swipe-action |
左滑操作 | 滑动按钮组 |
<yk-qrcode value="https://example.com" theme="primary" :rounded="true" :showActions="true" />
<yk-barcode value="YKUI2026" :width="300" :height="90" />
<yk-security @success="onVerified" />
开发约定
- 蒸汽模式:优先使用
transform/opacity过渡;复杂循环用setInterval/ykSpinLoop。 - 滚动:页面使用原生滚动,业务列表不要默认套
scroll-view(项目规范)。 - 图片:资源路径经
getFullImgUrl,勿写死完整 CDN。 - 样式 class:下划线命名
yk_xxx;避免body等全局类名;uvue 限制下勿用百分比max-width、慎用嵌套选择器。 - 接口字段:渲染直接取接口字段,不做无意义映射。
- 分页:默认每页 15 条。
- 表单提交:防重复点击、loading、并发控制。
- 注释:新增组件需写
@version/@author yangkang,并为每个 Prop 写说明。
目录结构
uni_modules/yk-ui/
├── components/ # 54 个 yk-* .uvue 组件
│ ├── yk-button/
│ ├── yk-keyboard/
│ ├── yk-float-ball/
│ └── …
├── libs/
│ ├── style/ # variables.css / animation.css / index.css
│ ├── theme.uts # 主题
│ ├── locale.uts # 国际化
│ ├── widescreen.uts # 宽屏
│ ├── toast.uts / modal.uts / request.uts / storage.uts …
│ ├── icons.uts # 图标映射
│ └── barcode.uts # Code39
├── static/font/
│ └── ykicon.ttf
├── index.uts # 统一导出
├── package.json
├── changelog.md
└── readme.md
Demo 工程
本仓库即完整 Demo:
| Tab | 内容 |
|---|---|
| 组件 | 分组导航进入各组件演示页 |
| 接口 | Toast / 主题 / 请求 / 存储 / 路由 / 事件 / 工具 / i18n·宽屏 等 |
| 关于 | 版本信息、渲染模式、主题切换 |
- 演示页路径形如:
/pages/demo/button/button - 配置见
pages/demo/nav.uts、pages/demo/api/nav.uts - 页面原生滚动;主壳下拉刷新在导航栏下方
更新日志
近期重点(1.4.0):
- 新增评分、步骤条、浮球、指引、轮播、索引、浮动面板、安全验证、条形码、单选等
- 强化二维码 / 返回顶部 / 日历 / 车牌键盘
- 国际化 + 宽屏
- 全组件参数注释与作者标注
- 真机兼容:Toast 位置、复选框对勾、TabBar 错位、步骤连线、浮球层级与回弹等
作者与许可
- 作者:yangkang
- 组件库:YK UI
- 版本:1.4.0
- 声明:插件不采集任何数据;无广告;无额外权限要求(见
package.jsondeclaration)
如需二次开发,请保留作者信息与版本注释规范,便于团队协作与插件市场更新。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 4472
赞赏 36
下载 12755599
赞赏 1959
赞赏
京公网安备:11010802035340号