@fredwsw/frontend-rules 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -0
- package/bin/cli.js +155 -0
- package/package.json +22 -0
- package/template/docs/uv-ui-docs/action-sheet-cn.md +180 -0
- package/template/docs/uv-ui-docs/album-cn.md +104 -0
- package/template/docs/uv-ui-docs/alert-cn.md +71 -0
- package/template/docs/uv-ui-docs/avatar-cn.md +149 -0
- package/template/docs/uv-ui-docs/back-top-cn.md +121 -0
- package/template/docs/uv-ui-docs/badge-cn.md +100 -0
- package/template/docs/uv-ui-docs/button-cn.md +181 -0
- package/template/docs/uv-ui-docs/calendar-cn.md +179 -0
- package/template/docs/uv-ui-docs/calendars-cn.md +264 -0
- package/template/docs/uv-ui-docs/cell-cn.md +163 -0
- package/template/docs/uv-ui-docs/checkbox-cn.md +164 -0
- package/template/docs/uv-ui-docs/code-cn.md +122 -0
- package/template/docs/uv-ui-docs/code-input-cn.md +127 -0
- package/template/docs/uv-ui-docs/collapse-cn.md +206 -0
- package/template/docs/uv-ui-docs/color-cn.md +122 -0
- package/template/docs/uv-ui-docs/count-down-cn.md +169 -0
- package/template/docs/uv-ui-docs/count-to-cn.md +125 -0
- package/template/docs/uv-ui-docs/datetime-picker-cn.md +167 -0
- package/template/docs/uv-ui-docs/divider-cn.md +90 -0
- package/template/docs/uv-ui-docs/drop-down-cn.md +287 -0
- package/template/docs/uv-ui-docs/empty-cn.md +76 -0
- package/template/docs/uv-ui-docs/form-cn.md +220 -0
- package/template/docs/uv-ui-docs/gap-cn.md +63 -0
- package/template/docs/uv-ui-docs/grid-cn.md +187 -0
- package/template/docs/uv-ui-docs/icon-cn.md +255 -0
- package/template/docs/uv-ui-docs/image-cn.md +170 -0
- package/template/docs/uv-ui-docs/index-list-cn.md +132 -0
- package/template/docs/uv-ui-docs/input-cn.md +157 -0
- package/template/docs/uv-ui-docs/keyboard-cn.md +156 -0
- package/template/docs/uv-ui-docs/layout-cn.md +215 -0
- package/template/docs/uv-ui-docs/line-cn.md +77 -0
- package/template/docs/uv-ui-docs/line-progress-cn.md +132 -0
- package/template/docs/uv-ui-docs/link-cn.md +97 -0
- package/template/docs/uv-ui-docs/list-cn.md +185 -0
- package/template/docs/uv-ui-docs/load-more-cn.md +144 -0
- package/template/docs/uv-ui-docs/loading-icon-cn.md +125 -0
- package/template/docs/uv-ui-docs/loading-page-cn.md +85 -0
- package/template/docs/uv-ui-docs/modal-cn.md +212 -0
- package/template/docs/uv-ui-docs/navbar-cn.md +171 -0
- package/template/docs/uv-ui-docs/no-network-cn.md +112 -0
- package/template/docs/uv-ui-docs/notice-bar-cn.md +119 -0
- package/template/docs/uv-ui-docs/notify-cn.md +185 -0
- package/template/docs/uv-ui-docs/number-box-cn.md +131 -0
- package/template/docs/uv-ui-docs/overlay-cn.md +122 -0
- package/template/docs/uv-ui-docs/parse-cn.md +177 -0
- package/template/docs/uv-ui-docs/pick-color-cn.md +147 -0
- package/template/docs/uv-ui-docs/picker-cn.md +159 -0
- package/template/docs/uv-ui-docs/popup-cn.md +184 -0
- package/template/docs/uv-ui-docs/qrcode-cn.md +150 -0
- package/template/docs/uv-ui-docs/radio-cn.md +166 -0
- package/template/docs/uv-ui-docs/rate-cn.md +91 -0
- package/template/docs/uv-ui-docs/read-more-cn.md +191 -0
- package/template/docs/uv-ui-docs/scroll-list-cn.md +188 -0
- package/template/docs/uv-ui-docs/search-cn.md +107 -0
- package/template/docs/uv-ui-docs/skeleton-cn.md +101 -0
- package/template/docs/uv-ui-docs/skeletons-cn.md +312 -0
- package/template/docs/uv-ui-docs/slider-cn.md +98 -0
- package/template/docs/uv-ui-docs/steps-cn.md +158 -0
- package/template/docs/uv-ui-docs/sticky-cn.md +82 -0
- package/template/docs/uv-ui-docs/subsection-cn.md +161 -0
- package/template/docs/uv-ui-docs/swipe-action-cn.md +207 -0
- package/template/docs/uv-ui-docs/swiper-cn.md +247 -0
- package/template/docs/uv-ui-docs/switch-cn.md +136 -0
- package/template/docs/uv-ui-docs/tabbar-cn.md +224 -0
- package/template/docs/uv-ui-docs/tabs-cn.md +260 -0
- package/template/docs/uv-ui-docs/tags-cn.md +191 -0
- package/template/docs/uv-ui-docs/text-cn.md +178 -0
- package/template/docs/uv-ui-docs/textarea-cn.md +132 -0
- package/template/docs/uv-ui-docs/toast-cn.md +110 -0
- package/template/docs/uv-ui-docs/tooltip-cn.md +91 -0
- package/template/docs/uv-ui-docs/transition-cn.md +202 -0
- package/template/docs/uv-ui-docs/upload-cn.md +156 -0
- package/template/docs/uv-ui-docs/vtabs-cn.md +190 -0
- package/template/docs/uv-ui-docs/waterfall-cn.md +276 -0
- package/template/rules/common.mdc +90 -0
- package/template/rules/uv-ui-docs.mdc +111 -0
- package/template/skills/code-simplifier/SKILL.md +109 -0
- package/template/skills/frontend-design/SKILL.md +44 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 表单
|
|
3
|
+
category: Components
|
|
4
|
+
title: Search
|
|
5
|
+
subtitle: 搜索
|
|
6
|
+
description: 搜索框组件,集成常见功能,开箱即用。
|
|
7
|
+
demo:
|
|
8
|
+
cols: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用 {#when-to-use}
|
|
12
|
+
|
|
13
|
+
`uv-search` 通过 `v-model` 双向绑定,输入变化会实时反映到变量,无需监听 `change`。
|
|
14
|
+
|
|
15
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
16
|
+
|
|
17
|
+
## 平台兼容性 {#platform}
|
|
18
|
+
|
|
19
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
20
|
+
| --- | --- | --- | --- | --- | --- |
|
|
21
|
+
| √ | √ | √ | √ | √ | √ |
|
|
22
|
+
|
|
23
|
+
**组件名:** `uv-search`
|
|
24
|
+
|
|
25
|
+
## 代码演示 {#examples}
|
|
26
|
+
|
|
27
|
+
### 基本使用 {#basic}
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<uv-search placeholder="请输入搜索内容" v-model="keyword"></uv-search>
|
|
32
|
+
</template>
|
|
33
|
+
<script>
|
|
34
|
+
export default {
|
|
35
|
+
data() {
|
|
36
|
+
return { keyword: '水调歌头' }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 输入框形状 {#shape}
|
|
43
|
+
|
|
44
|
+
`shape`:round 半圆,square 方形带圆角。
|
|
45
|
+
|
|
46
|
+
```vue
|
|
47
|
+
<uv-search shape="round"></uv-search>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 右侧控件 {#action}
|
|
51
|
+
|
|
52
|
+
- `showAction` 是否显示右侧按钮
|
|
53
|
+
- `actionText` 按钮文字
|
|
54
|
+
- `animation` 为 true 时失去焦点或点击后自动消失
|
|
55
|
+
- 点击右侧控件触发 `custom` 事件,非 `search`
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<uv-search :showAction="true" actionText="搜索" :animation="true"></uv-search>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 自定义样式 {#custom}
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<uv-search inputAlign="center" height="70"></uv-search>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## API {#api}
|
|
68
|
+
|
|
69
|
+
### Search Props {#props}
|
|
70
|
+
|
|
71
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
72
|
+
| --- | --- | --- | --- |
|
|
73
|
+
| value / v-model | 搜索值 | String | - |
|
|
74
|
+
| shape | 形状 | String | round |
|
|
75
|
+
| bgColor | 背景色 | String | #f2f2f2 |
|
|
76
|
+
| placeholder | 占位文字 | String | 请输入关键字 |
|
|
77
|
+
| clearabled | 清除控件 | Boolean | true |
|
|
78
|
+
| focus | 自动聚焦 | Boolean | false |
|
|
79
|
+
| showAction | 右侧控件 | Boolean | true |
|
|
80
|
+
| actionText | 右侧文字 | String | 搜索 |
|
|
81
|
+
| inputAlign | 对齐 | String | left |
|
|
82
|
+
| disabled | 禁用 | Boolean | false |
|
|
83
|
+
| borderColor | 边框色 | String | transparent |
|
|
84
|
+
| searchIcon | 左侧图标 | String | search |
|
|
85
|
+
| animation | 动画 | Boolean | false |
|
|
86
|
+
| maxlength | 最大长度 | String \| Number | -1 |
|
|
87
|
+
| height | 高度 rpx | String \| Number | 64 |
|
|
88
|
+
|
|
89
|
+
### Search Events {#events}
|
|
90
|
+
|
|
91
|
+
| 事件名 | 说明 | 回调参数 |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| @change | 内容变化 | value |
|
|
94
|
+
| @search | 确定搜索(回车/键盘搜索键) | value |
|
|
95
|
+
| @custom | 点击右侧控件 | value |
|
|
96
|
+
| @blur | 失去焦点 | value |
|
|
97
|
+
| @focus | 获得焦点 | value |
|
|
98
|
+
| @clear | 清空内容 | - |
|
|
99
|
+
| @click | disabled 时点击 | - |
|
|
100
|
+
| @clickIcon | 左侧图标点击 | - |
|
|
101
|
+
|
|
102
|
+
### Search Slots {#slots}
|
|
103
|
+
|
|
104
|
+
| 名称 | 说明 |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| prefix | 前置插槽 |
|
|
107
|
+
| suffix | 后置插槽 |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 数据
|
|
3
|
+
category: Components
|
|
4
|
+
title: Skeleton
|
|
5
|
+
subtitle: 骨架屏
|
|
6
|
+
description: 内容加载前的灰白占位块,支持标题/段落/头像占位与加载动画,提升等待体验。
|
|
7
|
+
demo:
|
|
8
|
+
cols: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用 {#when-to-use}
|
|
12
|
+
|
|
13
|
+
骨架屏一般用于页面请求远程数据未完成时,用灰色块预展示页面结构,提升等待时的感知体验。
|
|
14
|
+
|
|
15
|
+
说明:由于 VUE 和 NVUE 特性不同,组件动画在 VUE 上为由左到右形式,在 NVUE 上为明暗显隐形式。
|
|
16
|
+
|
|
17
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
18
|
+
|
|
19
|
+
## 平台兼容性 {#platform}
|
|
20
|
+
|
|
21
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
22
|
+
| --- | --- | --- | --- | --- | --- |
|
|
23
|
+
| √ | √ | √ | √ | √ | √ |
|
|
24
|
+
|
|
25
|
+
**组件名:** `uv-skeleton`
|
|
26
|
+
|
|
27
|
+
## 代码演示 {#examples}
|
|
28
|
+
|
|
29
|
+
### 基本使用 {#basic}
|
|
30
|
+
|
|
31
|
+
组件由标题、段落和头像占位组成,其中段落需通过 `rows` 配置才显示。
|
|
32
|
+
|
|
33
|
+
- `title`:是否显示标题占位(默认 true)
|
|
34
|
+
- `avatar`:是否显示头像占位
|
|
35
|
+
- `rows`:段落行数
|
|
36
|
+
- `loading`:是否加载中(为 true 显示骨架屏,否则展示插槽内容)
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<template>
|
|
40
|
+
<uv-skeleton rows="3" title loading></uv-skeleton>
|
|
41
|
+
</template>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 加载中动画 {#animate}
|
|
45
|
+
|
|
46
|
+
设置 `animate` 为 true,骨架块将有动画效果。
|
|
47
|
+
|
|
48
|
+
```vue
|
|
49
|
+
<uv-skeleton :loading="true" :animate="true"></uv-skeleton>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 显示头像 {#avatar}
|
|
53
|
+
|
|
54
|
+
```vue
|
|
55
|
+
<uv-skeleton :loading="true" avatar rows="1"></uv-skeleton>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 插槽内容 {#slot}
|
|
59
|
+
|
|
60
|
+
请求结束将 `loading` 设为 false,隐藏骨架并展示插槽内容。
|
|
61
|
+
|
|
62
|
+
```vue
|
|
63
|
+
<template>
|
|
64
|
+
<uv-skeleton rows="2" :loading="loading" avatar :title="false">
|
|
65
|
+
<text>loading为false时,将会展示此处插槽内容</text>
|
|
66
|
+
</uv-skeleton>
|
|
67
|
+
</template>
|
|
68
|
+
|
|
69
|
+
<script>
|
|
70
|
+
export default {
|
|
71
|
+
data() {
|
|
72
|
+
return {
|
|
73
|
+
loading: true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
onLoad() {
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
this.loading = false
|
|
79
|
+
}, 2000)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
</script>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## API {#api}
|
|
86
|
+
|
|
87
|
+
### Skeleton Props {#props}
|
|
88
|
+
|
|
89
|
+
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
|
90
|
+
| --- | --- | --- | --- | --- |
|
|
91
|
+
| loading | 是否显示骨架占位图(false 时展示子组件内容) | Boolean | true | true \| false |
|
|
92
|
+
| animate | 是否开启动画效果 | Boolean | true | true \| false |
|
|
93
|
+
| rows | 段落占位图行数 | Number \| String | 0 | - |
|
|
94
|
+
| rowsWidth | 段落占位图宽度(支持数组分别配置每行) | String \| Array \| Number | 100% | - |
|
|
95
|
+
| rowsHeight | 段落高度(支持数组分别配置每行) | String \| Array \| Number | 18 | - |
|
|
96
|
+
| title | 是否展示标题占位图 | Boolean | true | true \| false |
|
|
97
|
+
| titleWidth | 标题宽度 | String \| Number | 50% | - |
|
|
98
|
+
| titleHeight | 标题高度 | String \| Number | 18 | - |
|
|
99
|
+
| avatar | 是否展示头像占位图 | Boolean | false | true \| false |
|
|
100
|
+
| avatarSize | 头像占位图大小 | String \| Number | 32 | - |
|
|
101
|
+
| avatarShape | 头像占位图形状:circle / square | String | circle | circle \| square |
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 数据
|
|
3
|
+
category: Components
|
|
4
|
+
title: Skeletons
|
|
5
|
+
subtitle: 骨架屏(新版)
|
|
6
|
+
description: 在内容加载前展示与布局结构一致的灰白占位块,提升用户视觉体验。
|
|
7
|
+
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BD2JSKm8I-kAAAAAAAAAAAAADrJ8AQ/original
|
|
8
|
+
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*r29rQ51bNdwAAAAAAAAAAAAADrJ8AQ/original
|
|
9
|
+
demo:
|
|
10
|
+
cols: 2
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 何时使用 {#when-to-use}
|
|
14
|
+
|
|
15
|
+
骨架屏一般用于页面在请求远程数据尚未完成时,在内容加载出来前展示与内容布局结构一致的灰白块,提升用户视觉体验。
|
|
16
|
+
|
|
17
|
+
- 当页面需要异步加载数据,希望避免空白或闪烁时使用。
|
|
18
|
+
- 当需要告知用户内容正在加载,改善等待时的视觉感受时使用。
|
|
19
|
+
|
|
20
|
+
**新版 vs 老版:** 新版骨架屏与老版本使用参数有很大区别,无法替换老版本。新版比老版更加灵活,理论上简单的左右上下布局结构均可轻松实现,样式自由度较高,只要会写 CSS,推荐使用新版。
|
|
21
|
+
|
|
22
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
23
|
+
|
|
24
|
+
## 平台兼容性 {#platform}
|
|
25
|
+
|
|
26
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| √ | √ | √ | √ | √ | √ |
|
|
29
|
+
|
|
30
|
+
**组件名:** `uv-skeletons`
|
|
31
|
+
|
|
32
|
+
## 注意事项 {#notice}
|
|
33
|
+
|
|
34
|
+
为了避免错误使用,请在使用组件前仔细阅读以下注意事项:
|
|
35
|
+
|
|
36
|
+
- 由于 vue 和 nvue 的特性不同,组件动画在 vue 上为由左到右变化形式,在 nvue 上为明暗显隐的形式。
|
|
37
|
+
- 骨架屏的具体内容由 `skeleton` 参数决定,需按约定配置好该参数。
|
|
38
|
+
|
|
39
|
+
## 代码演示 {#examples}
|
|
40
|
+
|
|
41
|
+
### 基本使用 {#basic}
|
|
42
|
+
|
|
43
|
+
该组件主要由 `loading` 和 `skeleton` 两个参数控制:
|
|
44
|
+
|
|
45
|
+
- **loading**(必选):是否加载中状态,`true` 显示骨架屏占位,`false` 显示插槽内容
|
|
46
|
+
- **skeleton**:数组形式 `[Object, Object, ...]`
|
|
47
|
+
- `Object.type`:类型,见下方参数说明。除 `flex` 外,其他类型均可自定义样式,默认为 `line`
|
|
48
|
+
- `Object.num`:重复数量,默认为 1
|
|
49
|
+
- `Object.gap`:重复项之间的垂直间隔,仅当 `Object.num` > 1 时生效,默认 `20rpx`
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<template>
|
|
53
|
+
<view>
|
|
54
|
+
<uv-skeletons :loading="loading" :skeleton="skeleton"></uv-skeletons>
|
|
55
|
+
</view>
|
|
56
|
+
</template>
|
|
57
|
+
<script>
|
|
58
|
+
export default {
|
|
59
|
+
data() {
|
|
60
|
+
return {
|
|
61
|
+
loading: true,
|
|
62
|
+
skeleton: [
|
|
63
|
+
{
|
|
64
|
+
type: 'line',
|
|
65
|
+
num: 3,
|
|
66
|
+
gap: '20rpx'
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 自定义样式 {#custom-style}
|
|
76
|
+
|
|
77
|
+
通过 `skeleton` 中的 `style` 参数可自定义样式。`style` 类型可以是 `array | string | object`:
|
|
78
|
+
|
|
79
|
+
- **array**:如 `['height: 100rpx;', null, null]`,表示第一个 line 高度 100rpx,其余使用默认样式
|
|
80
|
+
- **string / object**:对所有重复项应用同一样式
|
|
81
|
+
|
|
82
|
+
```vue
|
|
83
|
+
<template>
|
|
84
|
+
<view>
|
|
85
|
+
<uv-skeletons :loading="loading" :skeleton="skeleton"></uv-skeletons>
|
|
86
|
+
</view>
|
|
87
|
+
</template>
|
|
88
|
+
<script>
|
|
89
|
+
export default {
|
|
90
|
+
data() {
|
|
91
|
+
return {
|
|
92
|
+
loading: true,
|
|
93
|
+
skeleton: [
|
|
94
|
+
{
|
|
95
|
+
type: 'line',
|
|
96
|
+
num: 3,
|
|
97
|
+
gap: '20rpx',
|
|
98
|
+
style: ['width: 200rpx;marginBottom: 50rpx;', 'height: 100rpx;', 'width: 500rpx;']
|
|
99
|
+
// style: 'width: 200rpx;marginBottom: 50rpx;'
|
|
100
|
+
// style: { width: '200rpx', marginBottom: '50rpx' }
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
</script>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 横向并列布局 {#flex-layout}
|
|
110
|
+
|
|
111
|
+
通过 `skeleton` 中 `type: 'flex'` 实现横向并列布局:
|
|
112
|
+
|
|
113
|
+
- **Object.children**:子项配置,用法同上。注意:children 下不支持再有 children
|
|
114
|
+
- **avatar**:头像类型,有默认样式,也可用 `style` 覆盖
|
|
115
|
+
- **custom**:完全自定义样式,便于语义理解
|
|
116
|
+
|
|
117
|
+
```vue
|
|
118
|
+
<template>
|
|
119
|
+
<view>
|
|
120
|
+
<uv-skeletons :loading="loading" :skeleton="skeleton"></uv-skeletons>
|
|
121
|
+
</view>
|
|
122
|
+
</template>
|
|
123
|
+
<script>
|
|
124
|
+
export default {
|
|
125
|
+
data() {
|
|
126
|
+
return {
|
|
127
|
+
loading: true,
|
|
128
|
+
skeleton: [
|
|
129
|
+
{
|
|
130
|
+
type: 'flex',
|
|
131
|
+
num: 1,
|
|
132
|
+
children: [
|
|
133
|
+
{
|
|
134
|
+
type: 'avatar',
|
|
135
|
+
num: 1,
|
|
136
|
+
style: 'marginRight: 10rpx;'
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'line',
|
|
140
|
+
num: 3,
|
|
141
|
+
gap: '30rpx',
|
|
142
|
+
style: ['width: 200rpx;', null, 'width:400rpx;']
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'custom',
|
|
146
|
+
num: 1,
|
|
147
|
+
style: 'width: 200rpx;height:200rpx;marginLeft: 10rpx;'
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
</script>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 混合布局 + 插槽内容 {#slot}
|
|
159
|
+
|
|
160
|
+
通过插槽写入展示内容,请求结束后将 `loading` 设为 `false`,骨架隐藏并展示插槽内容。
|
|
161
|
+
|
|
162
|
+
`skeleton` 参数可以是 **Number**,表示上下项之间的间距(单位 rpx),例如 `30` 表示 30rpx。
|
|
163
|
+
|
|
164
|
+
```vue
|
|
165
|
+
<template>
|
|
166
|
+
<view class="uv-page">
|
|
167
|
+
<uv-skeletons :loading="loading" :skeleton="skeleton" :animate="animate">
|
|
168
|
+
<view class="uv-skeletons__row uv-skeletons__row1">
|
|
169
|
+
<view class="uv-skeletons__row1--left">
|
|
170
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/3c9cff"></image>
|
|
171
|
+
</view>
|
|
172
|
+
<view class="uv-skeletons__row1--right">
|
|
173
|
+
<uv-text text="uv-ui破釜沉舟之兼容vue3+2、nvue、app、h5" color="#222" size="30rpx" lines="1"></uv-text>
|
|
174
|
+
<uv-text text="在经过改进后全面支持vue3" color="#222" size="30rpx" lines="1" margin="6rpx 0 0"></uv-text>
|
|
175
|
+
<uv-text text="欢迎大家使用" lines="1" color="#222" size="30rpx" margin="6rpx 0 0"></uv-text>
|
|
176
|
+
</view>
|
|
177
|
+
</view>
|
|
178
|
+
<view style="height: 30rpx;"></view>
|
|
179
|
+
<view class="uv-skeletons__row uv-skeletons__row2">
|
|
180
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/3c9cff"></image>
|
|
181
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/f9ae3d"></image>
|
|
182
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/5ac725"></image>
|
|
183
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/f56c6c"></image>
|
|
184
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/909399"></image>
|
|
185
|
+
</view>
|
|
186
|
+
<view style="height: 30rpx;"></view>
|
|
187
|
+
<view class="uv-skeletons__row uv-skeletons__row3">
|
|
188
|
+
<view class="uv-skeletons__row3--left">
|
|
189
|
+
<uv-text text="uv-ui破釜沉舟之兼容vue3+2、nvue、app、h5、多端小程序的uni-app生态框架" color="#222" size="30rpx" bold lines="1"></uv-text>
|
|
190
|
+
<uv-text text="大部分组件基于uView2.x,在经过改进后全面支持vue3,部分组件做了进一步的优化。" lines="1" color="#222" size="30rpx" margin="8rpx 0 0"></uv-text>
|
|
191
|
+
<uv-text text="uv-ui来源于社区,也回归到社区,永久开源,永远免费。" lines="1" color="#222" size="30rpx" margin="8rpx 0 0"></uv-text>
|
|
192
|
+
</view>
|
|
193
|
+
<view class="uv-skeletons__row3--right">
|
|
194
|
+
<image class="img" src="https://via.placeholder.com/200x200.png/3c9cff"></image>
|
|
195
|
+
</view>
|
|
196
|
+
</view>
|
|
197
|
+
</uv-skeletons>
|
|
198
|
+
</view>
|
|
199
|
+
</template>
|
|
200
|
+
<script>
|
|
201
|
+
export default {
|
|
202
|
+
data() {
|
|
203
|
+
return {
|
|
204
|
+
loading: true,
|
|
205
|
+
animate: true,
|
|
206
|
+
skeleton: [
|
|
207
|
+
{
|
|
208
|
+
type: 'flex',
|
|
209
|
+
num: 1,
|
|
210
|
+
children: [
|
|
211
|
+
{ type: 'custom', num: 1, style: 'width:136rpx;height:136rpx;marginRight: 30rpx;' },
|
|
212
|
+
{ type: 'line', num: 3, style: [null, 'width:360rpx;', 'width:200rpx;'] }
|
|
213
|
+
]
|
|
214
|
+
},
|
|
215
|
+
30,
|
|
216
|
+
{
|
|
217
|
+
type: 'flex',
|
|
218
|
+
children: [
|
|
219
|
+
{ type: 'custom', style: 'width:98rpx;height:160rpx;' },
|
|
220
|
+
{ type: 'custom', style: 'width:98rpx;height:160rpx;marginLeft:50rpx;' },
|
|
221
|
+
{ type: 'custom', style: 'width:98rpx;height:160rpx;marginLeft:50rpx;' },
|
|
222
|
+
{ type: 'custom', style: 'width:98rpx;height:160rpx;marginLeft:50rpx;' },
|
|
223
|
+
{ type: 'custom', style: 'width:98rpx;height:160rpx;marginLeft:50rpx;' }
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
30,
|
|
227
|
+
{
|
|
228
|
+
type: 'flex',
|
|
229
|
+
children: [
|
|
230
|
+
{ type: 'line', num: 3, gap: '30rpx' },
|
|
231
|
+
{ type: 'custom', style: 'width:160rpx;height:160rpx;marginLeft: 30rpx;' }
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
</script>
|
|
239
|
+
<style lang="scss" scoped>
|
|
240
|
+
.uv-page {
|
|
241
|
+
padding: 15px 30rpx 40px;
|
|
242
|
+
}
|
|
243
|
+
.uv-skeletons__row {
|
|
244
|
+
/* #ifndef APP-NVUE */
|
|
245
|
+
display: flex;
|
|
246
|
+
/* #endif */
|
|
247
|
+
flex-direction: row;
|
|
248
|
+
}
|
|
249
|
+
.uv-skeletons__row1 {
|
|
250
|
+
&--left {
|
|
251
|
+
width: 136rpx;
|
|
252
|
+
height: 136rpx;
|
|
253
|
+
margin-right: 30rpx;
|
|
254
|
+
.img {
|
|
255
|
+
width: 136rpx;
|
|
256
|
+
height: 136rpx;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
&--right {
|
|
260
|
+
flex: 1;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
.uv-skeletons__row2 {
|
|
264
|
+
justify-content: space-between;
|
|
265
|
+
.img {
|
|
266
|
+
width: 98rpx;
|
|
267
|
+
height: 160rpx;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
.uv-skeletons__row3 {
|
|
271
|
+
&--left {
|
|
272
|
+
flex: 1;
|
|
273
|
+
}
|
|
274
|
+
&--right .img {
|
|
275
|
+
width: 160rpx;
|
|
276
|
+
height: 160rpx;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
</style>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## API {#api}
|
|
283
|
+
|
|
284
|
+
### Skeletons Props {#props}
|
|
285
|
+
|
|
286
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
287
|
+
| --- | --- | --- | --- |
|
|
288
|
+
| loading | Boolean | true | 是否显示骨架 |
|
|
289
|
+
| animate | Boolean | true | 是否开启动画效果 |
|
|
290
|
+
| skeleton | Array | [] | 骨架内容,具体用法见 Skeletons Options |
|
|
291
|
+
|
|
292
|
+
### Skeletons Options(skeleton 参数) {#skeleton-options}
|
|
293
|
+
|
|
294
|
+
`skeleton` 配置决定骨架内容如何显示。格式为:`[Object, Number, Object, ...]`,其中 `Number` 表示上一项与下一项的垂直间距(单位 rpx)。
|
|
295
|
+
|
|
296
|
+
| 属性名 | 说明 |
|
|
297
|
+
| --- | --- |
|
|
298
|
+
| Object.type | 骨架类型:`line`(段落)、`avatar`(头像)、`flex`(横向并列,需配合 children)、`custom`(自定义) |
|
|
299
|
+
| Object.num | 重复数量,如 `{ type: 'line', num: 3 }` 表示 3 个段落骨架 |
|
|
300
|
+
| Object.gap | 重复项的下边距,如 `{ type: 'line', num: 3, gap: '30rpx' }`。仅当 `Object.num` > 1 时生效 |
|
|
301
|
+
| Object.style | 骨架样式,类型 `Array` / `Object` / `String`。Array 依次对应每项样式;Object / String 表示所有项共用 |
|
|
302
|
+
| Object.children | 仅当 `type: 'flex'` 时使用,子项配置,用法同上。children 下不支持再有 children |
|
|
303
|
+
| Number | 上一项与下一项的垂直间距,单位 rpx |
|
|
304
|
+
|
|
305
|
+
## 类型速查 {#type-summary}
|
|
306
|
+
|
|
307
|
+
| type | 用途 |
|
|
308
|
+
| --- | --- |
|
|
309
|
+
| line | 段落结构,默认类型 |
|
|
310
|
+
| avatar | 头像形状,有默认样式 |
|
|
311
|
+
| flex | 横向并列布局,需配置 children |
|
|
312
|
+
| custom | 完全自定义样式 |
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: 表单
|
|
3
|
+
category: Components
|
|
4
|
+
title: Slider
|
|
5
|
+
subtitle: 滑动选择器
|
|
6
|
+
description: 用于手动选择区间范围,H5/小程序/APP-VUE 使用 WXS,NVUE 使用 BindingX。
|
|
7
|
+
demo:
|
|
8
|
+
cols: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用 {#when-to-use}
|
|
12
|
+
|
|
13
|
+
`uv-slider` 通过 `v-model` 绑定 0–100 的值,实时反映滑动结果。可用 `min`、`max` 设置范围。
|
|
14
|
+
|
|
15
|
+
> 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
16
|
+
|
|
17
|
+
## 平台兼容性 {#platform}
|
|
18
|
+
|
|
19
|
+
| App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
|
|
20
|
+
| --- | --- | --- | --- | --- | --- |
|
|
21
|
+
| √ | √ | √ | √ | √ | √ |
|
|
22
|
+
|
|
23
|
+
**组件名:** `uv-slider`
|
|
24
|
+
|
|
25
|
+
## 代码演示 {#examples}
|
|
26
|
+
|
|
27
|
+
### 基本使用 {#basic}
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<uv-slider v-model="value"></uv-slider>
|
|
32
|
+
</template>
|
|
33
|
+
<script>
|
|
34
|
+
export default {
|
|
35
|
+
data() {
|
|
36
|
+
return { value: 30 }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 最大最小值 {#min-max}
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<uv-slider v-model="value" min="30" max="80"></uv-slider>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 步进值 {#step}
|
|
49
|
+
|
|
50
|
+
`step` 需能被 `max` 整除。
|
|
51
|
+
|
|
52
|
+
```vue
|
|
53
|
+
<uv-slider v-model="value" step="10" min="30" max="100"></uv-slider>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 禁用 {#disabled}
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<uv-slider v-model="value" disabled></uv-slider>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 自定义样式 {#style}
|
|
63
|
+
|
|
64
|
+
```vue
|
|
65
|
+
<uv-slider
|
|
66
|
+
v-model="value"
|
|
67
|
+
block-size="30"
|
|
68
|
+
block-color="red"
|
|
69
|
+
backgroundColor="pink"
|
|
70
|
+
activeColor="blue"
|
|
71
|
+
></uv-slider>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## API {#api}
|
|
75
|
+
|
|
76
|
+
### Slider Props {#props}
|
|
77
|
+
|
|
78
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
79
|
+
| --- | --- | --- | --- |
|
|
80
|
+
| value / v-model | 选择值 | String \| Number | 0 |
|
|
81
|
+
| min | 最小值 | String \| Number | 1 |
|
|
82
|
+
| max | 最大值 | String \| Number | 100 |
|
|
83
|
+
| step | 步长 | String \| Number | 1 |
|
|
84
|
+
| activeColor | 已选部分颜色 | String | #2979ff |
|
|
85
|
+
| backgroundColor | 背景条颜色 | String | #c0c4cc |
|
|
86
|
+
| block-size | 滑块大小 12-28 | String \| Number | 18 |
|
|
87
|
+
| block-color | 滑块颜色 | String | #ffffff |
|
|
88
|
+
| show-value | 是否显示当前值 | Boolean | false |
|
|
89
|
+
| blockStyle | 滑块自定义样式 | Object \| String | - |
|
|
90
|
+
| customStyle | 自定义样式 | Object | - |
|
|
91
|
+
|
|
92
|
+
### Slider Events {#events}
|
|
93
|
+
|
|
94
|
+
| 事件名 | 说明 | 回调参数 |
|
|
95
|
+
| --- | --- | --- |
|
|
96
|
+
| @input | 拖动中 | value |
|
|
97
|
+
| @changing | 拖动中 | value |
|
|
98
|
+
| @change | 拖动结束 | value |
|