更新记录
1.2.6(2026-10-04) 下载此版本
新增 预览图
1.2.5(2026-10-03) 下载此版本
- 文档形态简化:统一使用普通
readme.md,不再引入额外的在线文档页- 插件市场仅渲染纯 Markdown,嵌 HTML 不可靠(渲染器有 HTML 白名单过滤, 且无 JS 能力,无法实现导航跳转、滚动高亮、组件预览等交互),故保持纯文字文档
readme.md补齐「注意事项」小节,覆盖 v-model 取值规则、弹层定位限制、 多选数据类型、value唯一性等易踩点
1.2.3(2026-10-03) 下载此版本
- 文档改造:
readme.md全面改为面向使用者的写法- 「安装」重写为两种用户视角的方式:插件市场导入 / 手动拷贝到
uni_modules - 移除所有面向维护者的内容(脚手架用法、目录结构、本地路径等)
- 补充环境要求表、21 个主题变量表、Select 完整 API(20 属性 / 7 事件 / 1 插槽)与生效时机对照表
- 「安装」重写为两种用户视角的方式:插件市场导入 / 手动拷贝到
- 新增可视化文档页
docs/index.html- 左侧导航 + 右侧内容布局,与 Demo 首页保持一致
- 每个组件均提供实时渲染的预览效果,并配套可折叠、可复制的示例代码块
- 单文件、零依赖,双击即可在浏览器打开
- 说明:插件市场仅渲染纯 Markdown,无法渲染 Vue 组件,因此可视化预览以独立 HTML 页承载
- 插件市场提交修复
keywords精简至 5 个(插件市场标签上限为 5,超出会导致提交失败)
平台兼容性
uni-app(5.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | √ | √ | √ | × | √ | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × |
simple-ui 简约组件库
一套基于 uni-app + Vue3 的 UI 组件库,覆盖大部分复杂业务应用场景,组件可直接投入使用,无需二次封装。
特性
- 面向业务场景设计:组件能力覆盖表单、选择、反馈等常见复杂业务需求,拿来即用
- 全平台兼容:App(Android / iOS)、H5、微信 / 支付宝 / 头条 / 百度 / 快手 / 京东 / QQ / 飞书 / 小红书 小程序
- easycom 按需引入:无需 import,直接用标签,不用的组件不会打包进产物
- SCSS 变量主题:覆盖变量即可整库换肤
- BEM 命名:
sui-前缀,不污染你的全局样式
安装
方式一:插件市场导入(推荐)
- 在 HBuilderX 中打开你的项目
- 访问 DCloud 插件市场,搜索 simple-ui
- 点击「下载插件并导入 HBuilderX」,选择你的项目
导入后组件会出现在你项目的 uni_modules/simple-ui 目录下,无需任何额外配置。
后续更新:右键 uni_modules/simple-ui 目录 → 更新插件。
方式二:手动拷贝
把整个 simple-ui 目录拷贝到你项目的 uni_modules/ 下即可。
目录名必须保持为
simple-ui,改名会导致 easycom 失效。
环境要求
| 项 | 要求 |
|---|---|
| uni-app | Vue3 |
| HBuilderX | ≥ 3.1.0 |
| SCSS | 需开启(HBuilderX 需安装 sass 插件) |
快速开始
插件内置 easycom 规则,无需 import 和注册,直接在页面里使用:
<template>
<view>
<simple-button text="提交" type="primary" @click="onSubmit" />
</view>
</template>
<script>
export default {
methods: {
onSubmit() {
uni.showToast({ title: '已提交', icon: 'none' })
}
}
}
</script>
全局注册(可选)
想一次性注册全部组件时使用:
// main.js
import { createSSRApp } from 'vue'
import App from './App.vue'
import SimpleUI from '@/uni_modules/simple-ui'
export function createApp() {
const app = createSSRApp(App)
app.use(SimpleUI)
return { app }
}
按需手动引入(可选)
需要在代码里持有组件引用时使用:
<script>
import { SimpleButton } from '@/uni_modules/simple-ui'
export default {
components: { SimpleButton }
}
</script>
主题定制
组件内部所有颜色、尺寸都使用 !default 变量。在你项目的 uni.scss 中先引入主题文件、再声明覆盖值:
// uni.scss
@import '@/uni_modules/simple-ui/libs/theme.scss';
/* 覆盖主色 */
$sui-color-primary: #ff6b00;
/* 覆盖圆角 */
$sui-radius-base: 20rpx;
变量声明顺序必须在
@import之后,因为 SCSS 后声明的变量覆盖先声明的。
常用变量
| 变量 | 默认值 | 说明 |
|---|---|---|
$sui-color-primary |
#2979ff |
主色 |
$sui-color-success |
#19be6b |
成功色 |
$sui-color-warning |
#ff9900 |
警告色 |
$sui-color-error |
#fa3534 |
错误色 |
$sui-color-info |
#909399 |
信息色 |
$sui-text-color |
#303133 |
主文字色 |
$sui-text-color-content |
#606266 |
正文文字色 |
$sui-text-color-tips |
#909399 |
辅助文字色 |
$sui-bg-color |
#ffffff |
组件背景色 |
$sui-bg-color-mask |
rgba(0,0,0,.45) |
遮罩色 |
$sui-border-color |
#e4e7ed |
边框色 |
$sui-radius-base |
12rpx |
基础圆角 |
$sui-height-base |
76rpx |
基础高度 |
$sui-font-size-base |
28rpx |
基础字号 |
$sui-form-height |
88rpx |
表单控件高度 |
$sui-placeholder-color |
#c0c4cc |
占位文字色 |
$sui-selected-color |
#2979ff |
选中态文字 / 对勾色 |
$sui-option-height |
96rpx |
选择器选项高度 |
$sui-option-selected-bg |
#f5f9ff |
选择器选中项背景 |
$sui-zindex-popup |
999 |
弹层层级 |
$sui-zindex-mask |
998 |
遮罩层级 |
组件列表
simple-button 按钮
常用的操作按钮,支持 6 种类型、3 种尺寸与多种状态。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
text |
String | '' |
按钮文字(也可用默认插槽) |
type |
String | primary |
primary / success / warning / error / info / default |
size |
String | default |
small / default / large |
plain |
Boolean | false |
朴素(描边)样式 |
round |
Boolean | false |
圆角样式 |
block |
Boolean | false |
通栏(占满一行) |
disabled |
Boolean | false |
禁用 |
loading |
Boolean | false |
加载中 |
color |
String | '' |
覆盖文字颜色 |
bgColor |
String | '' |
覆盖背景色(plain 模式下不生效) |
插槽 / 事件
| 名称 | 类型 | 说明 |
|---|---|---|
default |
插槽 | 按钮内容,优先级高于 text |
icon |
插槽 | 图标区域 |
click |
事件 | 点击按钮(禁用 / 加载中不触发) |
用法
<simple-button text="主要" type="primary" />
<simple-button text="成功" type="success" />
<simple-button text="朴素" plain />
<simple-button text="圆角" round />
<simple-button text="禁用" disabled />
<simple-button text="加载中" loading />
<simple-button text="通栏" block @click="onClick" />
simple-select 选择器
功能完善的下拉选择器:单选 / 多选、底部弹层 / 顶部弹层 / 下拉面板、默认选中、文字对齐、选项插槽、确认前拦截、选项搜索。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
modelValue |
String / Number / Array | undefined |
绑定值,配合 v-model(多选传数组) |
options |
Array | [] |
选项数组 [{ label, value, disabled }] |
mode |
String | popup |
popup 弹层(带确认)/ dropdown 下拉面板(即时生效) |
position |
String | bottom |
bottom 底部 / top 顶部 |
multiple |
Boolean | false |
是否多选 |
defaultValue |
String / Number / Array | undefined |
默认选中值(非受控初始值) |
align |
String | left |
left / center / right |
placeholder |
String | 请选择 |
占位文字 |
title |
String | 请选择 |
弹层标题(popup 模式) |
labelKey |
String | label |
选项文字字段名 |
valueKey |
String | value |
选项值字段名 |
clearable |
Boolean | false |
是否可清空 |
disabled |
Boolean | false |
是否禁用 |
searchable |
Boolean | false |
是否开启选项搜索 |
searchPlaceholder |
String | 搜索 |
搜索框占位文字 |
emptyText |
String | 暂无数据 |
空数据提示 |
color |
String | '' |
选中文字颜色 |
maxHeight |
String / Number | 640 |
列表最大高度(rpx) |
closeOnClickMask |
Boolean | true |
点击遮罩是否关闭 |
beforeChange |
Function | null |
确认前回调,返回 false 可拦截 |
事件 / 插槽
| 名称 | 类型 | 回调参数 / 说明 |
|---|---|---|
update:modelValue |
事件 | value —— v-model 自动处理 |
change |
事件 | (value, item),多选时 item 为数组 |
confirm |
事件 | value —— 点击「确定」提交成功 |
open / close |
事件 | 面板展开 / 关闭 |
clear |
事件 | 点击清空按钮 |
search |
事件 | keyword —— 搜索关键词变化 |
option |
插槽 | { item, index, selected } —— 自定义选项渲染 |
生效时机
| 模式 | 交互 | 何时触发 change |
|---|---|---|
popup(默认) |
点击选项只更新面板内高亮,点「确定」才提交 | 点击「确定」后 |
dropdown |
点击选项立即生效,单选自动收起 | 点击选项后 |
beforeChange在两种模式下都会触发,可作为统一的拦截入口。
用法
<!-- 基础:底部弹层 -->
<simple-select v-model="city" :options="options" placeholder="请选择城市" />
<!-- 顶部弹层 -->
<simple-select v-model="city" :options="options" position="top" title="请选择" />
<!-- 下拉面板 -->
<simple-select v-model="cate" :options="options" mode="dropdown" />
<!-- 默认选中(非受控) -->
<simple-select :options="options" :default-value="'shanghai'" />
<!-- 多选 -->
<simple-select v-model="values" multiple clearable :options="options" />
<!-- 对齐方式 -->
<simple-select v-model="city" :options="options" align="right" />
<!-- 选项可搜索 -->
<simple-select v-model="city" searchable :options="options" @search="onSearch" />
<!-- 确认前拦截 -->
<simple-select v-model="city" :options="options" :before-change="beforeChange" />
<!-- 自定义选项插槽 -->
<simple-select v-model="city" :options="options">
<template #option="{ item, index, selected }">
<view class="my-option">
<text>{{ index + 1 }}. {{ item.label }}</text>
<text v-if="selected">已选</text>
</view>
</template>
</simple-select>
<!-- 自定义字段名 -->
<simple-select v-model="userId" :options="userList" label-key="name" value-key="id" />
选项数据结构
const options = [
{ label: '北京', value: 'beijing' },
{ label: '上海', value: 'shanghai' },
{ label: '广州(禁用)', value: 'guangzhou', disabled: true }
]
label—— 展示文字(可用labelKey自定义字段名)value—— 选中值(可用valueKey自定义字段名),必须唯一,不要用对象disabled—— 可选,为true时该项不可点击
注意事项
value必须唯一且为基本类型(字符串 / 数字),不要传对象,否则选中判断会失效popup模式基于position: fixed全屏定位,若父级使用了transform会导致定位异常- 选择器列表高度由
maxHeight控制,超过后内部滚动 dropdown模式的面板会撑开父级,建议给外层容器留出空间或设置overflow: visible- 多选的值必须传数组,单选建议传基本类型;清空时单选输出
'',多选输出[] popup模式下点击「取消」或遮罩不会回写值,暂存态会被丢弃- 组件目录名与文件名必须一致(
simple-xxx/simple-xxx.vue),否则 easycom 无法识别

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 103
赞赏 1
下载 12651403
赞赏 1953
赞赏
京公网安备:11010802035340号