@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.
Files changed (81) hide show
  1. package/README.md +302 -0
  2. package/bin/cli.js +155 -0
  3. package/package.json +22 -0
  4. package/template/docs/uv-ui-docs/action-sheet-cn.md +180 -0
  5. package/template/docs/uv-ui-docs/album-cn.md +104 -0
  6. package/template/docs/uv-ui-docs/alert-cn.md +71 -0
  7. package/template/docs/uv-ui-docs/avatar-cn.md +149 -0
  8. package/template/docs/uv-ui-docs/back-top-cn.md +121 -0
  9. package/template/docs/uv-ui-docs/badge-cn.md +100 -0
  10. package/template/docs/uv-ui-docs/button-cn.md +181 -0
  11. package/template/docs/uv-ui-docs/calendar-cn.md +179 -0
  12. package/template/docs/uv-ui-docs/calendars-cn.md +264 -0
  13. package/template/docs/uv-ui-docs/cell-cn.md +163 -0
  14. package/template/docs/uv-ui-docs/checkbox-cn.md +164 -0
  15. package/template/docs/uv-ui-docs/code-cn.md +122 -0
  16. package/template/docs/uv-ui-docs/code-input-cn.md +127 -0
  17. package/template/docs/uv-ui-docs/collapse-cn.md +206 -0
  18. package/template/docs/uv-ui-docs/color-cn.md +122 -0
  19. package/template/docs/uv-ui-docs/count-down-cn.md +169 -0
  20. package/template/docs/uv-ui-docs/count-to-cn.md +125 -0
  21. package/template/docs/uv-ui-docs/datetime-picker-cn.md +167 -0
  22. package/template/docs/uv-ui-docs/divider-cn.md +90 -0
  23. package/template/docs/uv-ui-docs/drop-down-cn.md +287 -0
  24. package/template/docs/uv-ui-docs/empty-cn.md +76 -0
  25. package/template/docs/uv-ui-docs/form-cn.md +220 -0
  26. package/template/docs/uv-ui-docs/gap-cn.md +63 -0
  27. package/template/docs/uv-ui-docs/grid-cn.md +187 -0
  28. package/template/docs/uv-ui-docs/icon-cn.md +255 -0
  29. package/template/docs/uv-ui-docs/image-cn.md +170 -0
  30. package/template/docs/uv-ui-docs/index-list-cn.md +132 -0
  31. package/template/docs/uv-ui-docs/input-cn.md +157 -0
  32. package/template/docs/uv-ui-docs/keyboard-cn.md +156 -0
  33. package/template/docs/uv-ui-docs/layout-cn.md +215 -0
  34. package/template/docs/uv-ui-docs/line-cn.md +77 -0
  35. package/template/docs/uv-ui-docs/line-progress-cn.md +132 -0
  36. package/template/docs/uv-ui-docs/link-cn.md +97 -0
  37. package/template/docs/uv-ui-docs/list-cn.md +185 -0
  38. package/template/docs/uv-ui-docs/load-more-cn.md +144 -0
  39. package/template/docs/uv-ui-docs/loading-icon-cn.md +125 -0
  40. package/template/docs/uv-ui-docs/loading-page-cn.md +85 -0
  41. package/template/docs/uv-ui-docs/modal-cn.md +212 -0
  42. package/template/docs/uv-ui-docs/navbar-cn.md +171 -0
  43. package/template/docs/uv-ui-docs/no-network-cn.md +112 -0
  44. package/template/docs/uv-ui-docs/notice-bar-cn.md +119 -0
  45. package/template/docs/uv-ui-docs/notify-cn.md +185 -0
  46. package/template/docs/uv-ui-docs/number-box-cn.md +131 -0
  47. package/template/docs/uv-ui-docs/overlay-cn.md +122 -0
  48. package/template/docs/uv-ui-docs/parse-cn.md +177 -0
  49. package/template/docs/uv-ui-docs/pick-color-cn.md +147 -0
  50. package/template/docs/uv-ui-docs/picker-cn.md +159 -0
  51. package/template/docs/uv-ui-docs/popup-cn.md +184 -0
  52. package/template/docs/uv-ui-docs/qrcode-cn.md +150 -0
  53. package/template/docs/uv-ui-docs/radio-cn.md +166 -0
  54. package/template/docs/uv-ui-docs/rate-cn.md +91 -0
  55. package/template/docs/uv-ui-docs/read-more-cn.md +191 -0
  56. package/template/docs/uv-ui-docs/scroll-list-cn.md +188 -0
  57. package/template/docs/uv-ui-docs/search-cn.md +107 -0
  58. package/template/docs/uv-ui-docs/skeleton-cn.md +101 -0
  59. package/template/docs/uv-ui-docs/skeletons-cn.md +312 -0
  60. package/template/docs/uv-ui-docs/slider-cn.md +98 -0
  61. package/template/docs/uv-ui-docs/steps-cn.md +158 -0
  62. package/template/docs/uv-ui-docs/sticky-cn.md +82 -0
  63. package/template/docs/uv-ui-docs/subsection-cn.md +161 -0
  64. package/template/docs/uv-ui-docs/swipe-action-cn.md +207 -0
  65. package/template/docs/uv-ui-docs/swiper-cn.md +247 -0
  66. package/template/docs/uv-ui-docs/switch-cn.md +136 -0
  67. package/template/docs/uv-ui-docs/tabbar-cn.md +224 -0
  68. package/template/docs/uv-ui-docs/tabs-cn.md +260 -0
  69. package/template/docs/uv-ui-docs/tags-cn.md +191 -0
  70. package/template/docs/uv-ui-docs/text-cn.md +178 -0
  71. package/template/docs/uv-ui-docs/textarea-cn.md +132 -0
  72. package/template/docs/uv-ui-docs/toast-cn.md +110 -0
  73. package/template/docs/uv-ui-docs/tooltip-cn.md +91 -0
  74. package/template/docs/uv-ui-docs/transition-cn.md +202 -0
  75. package/template/docs/uv-ui-docs/upload-cn.md +156 -0
  76. package/template/docs/uv-ui-docs/vtabs-cn.md +190 -0
  77. package/template/docs/uv-ui-docs/waterfall-cn.md +276 -0
  78. package/template/rules/common.mdc +90 -0
  79. package/template/rules/uv-ui-docs.mdc +111 -0
  80. package/template/skills/code-simplifier/SKILL.md +109 -0
  81. package/template/skills/frontend-design/SKILL.md +44 -0
@@ -0,0 +1,206 @@
1
+ ---
2
+ group: 数据
3
+ category: Components
4
+ title: Collapse
5
+ subtitle: 折叠面板
6
+ description: 用于折叠收纳内容区域,支持手风琴模式、异步内容初始化以及自定义标题与内容。
7
+ demo:
8
+ cols: 2
9
+ ---
10
+
11
+ ## 何时使用 {#when-to-use}
12
+
13
+ `uv-collapse` 用于通过折叠面板收纳内容区域,适合展示较多分组内容,通过展开/收起减少页面占用。
14
+ 支持单/多展开、手风琴模式以及异步加载内容后重新计算高度。
15
+
16
+ > 完整示例下载地址:[uv-ui 插件市场](https://ext.dcloud.net.cn/plugin?name=uv-ui)
17
+
18
+ ## 平台兼容性 {#platform}
19
+
20
+ | App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
21
+ | --- | --- | --- | --- | --- | --- |
22
+ | √ | √ | √ | √ | √ | √ |
23
+
24
+ **组件名:** `uv-collapse`、`uv-collapse-item`
25
+
26
+ ## 代码演示 {#examples}
27
+
28
+ ### 基本使用 {#basic}
29
+
30
+ ```vue
31
+ <template>
32
+ <uv-collapse @change="change" @close="close" @open="open">
33
+ <uv-collapse-item title="文档指南" name="Docs guide">
34
+ <text class="uv-collapse-content">涵盖uniapp各个方面,给开发者方向指导和设计理念</text>
35
+ </uv-collapse-item>
36
+ <uv-collapse-item title="组件全面" name="Variety components">
37
+ <text class="uv-collapse-content">组件功能丰富,多端兼容。让您快速集成,开箱即用</text>
38
+ </uv-collapse-item>
39
+ <uv-collapse-item title="众多利器" name="Numerous tools">
40
+ <text class="uv-collapse-content"
41
+ >众多JS小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨</text
42
+ >
43
+ </uv-collapse-item>
44
+ </uv-collapse>
45
+ </template>
46
+ ```
47
+
48
+ ### 异步加载数据 {#async}
49
+
50
+ 展开高度由内部 JS 计算;异步加载内容后需调用 `init()` 重新计算高度。
51
+
52
+ ```vue
53
+ <template>
54
+ <uv-collapse ref="collapse">
55
+ <uv-collapse-item title="文档指南" name="Docs guide">
56
+ <text class="uv-collapse-content">{{ text1 }}</text>
57
+ </uv-collapse-item>
58
+ <uv-collapse-item title="组件全面" name="Variety components">
59
+ <text class="uv-collapse-content">{{ text2 }}</text>
60
+ </uv-collapse-item>
61
+ <uv-collapse-item title="众多利器" name="Numerous tools">
62
+ <text class="uv-collapse-content">{{ text3 }}</text>
63
+ </uv-collapse-item>
64
+ </uv-collapse>
65
+ </template>
66
+
67
+ <script>
68
+ export default {
69
+ data() {
70
+ return {
71
+ text1: '',
72
+ text2: '',
73
+ text3: ''
74
+ }
75
+ },
76
+ onLoad() {
77
+ uni.showLoading({ title: '请求中', mask: true })
78
+ setTimeout(() => {
79
+ this.text1 = '涵盖uniapp各个方面,给开发者方向指导和设计理念'
80
+ this.text2 = '组件功能丰富,多端兼容。让您快速集成,开箱即用'
81
+ this.text3 = '众多JS小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨'
82
+ this.$nextTick(() => {
83
+ this.$refs.collapse.init()
84
+ uni.showToast({ icon: 'success', title: '请求成功' })
85
+ uni.hideLoading()
86
+ })
87
+ }, 1000)
88
+ }
89
+ }
90
+ </script>
91
+ ```
92
+
93
+ ### 控制初始展开与禁用 {#initial}
94
+
95
+ 通过 `value` 指定展开面板 `name`,通过 `disabled` 控制是否可展开。
96
+
97
+ ```vue
98
+ <template>
99
+ <uv-collapse :value="['2']">
100
+ <uv-collapse-item title="文档指南">
101
+ <text class="uv-collapse-content">涵盖uniapp各个方面,给开发者方向指导和设计理念</text>
102
+ </uv-collapse-item>
103
+ <uv-collapse-item disabled title="组件全面">
104
+ <text class="uv-collapse-content">组件功能丰富,多端兼容。让您快速集成,开箱即用</text>
105
+ </uv-collapse-item>
106
+ <uv-collapse-item name="2" title="众多利器">
107
+ <text class="uv-collapse-content">众多JS小工具,是您开发过程中召之即来的利器</text>
108
+ </uv-collapse-item>
109
+ </uv-collapse>
110
+ </template>
111
+ ```
112
+
113
+ ### 手风琴模式 {#accordion}
114
+
115
+ `accordion` 设为 true 时开启手风琴模式(同一时间只展开一项)。
116
+
117
+ ```vue
118
+ <uv-collapse accordion>
119
+ <uv-collapse-item title="文档指南">
120
+ <text class="uv-collapse-content">涵盖uniapp各个方面,给开发者方向指导和设计理念</text>
121
+ </uv-collapse-item>
122
+ <uv-collapse-item title="组件全面">
123
+ <text class="uv-collapse-content">组件功能丰富,多端兼容。让您快速集成,开箱即用</text>
124
+ </uv-collapse-item>
125
+ </uv-collapse>
126
+ ```
127
+
128
+ ### 自定义标题与内容 {#custom}
129
+
130
+ 通过 slot 自定义标题、图标、右侧内容等(微信小程序暂不支持此写法)。
131
+
132
+ ```vue
133
+ <template>
134
+ <view class="uv-page__item">
135
+ <uv-collapse accordion>
136
+ <uv-collapse-item title="文档指南">
137
+ <text slot="title" class="uv-page__item__title__slot-title">文档指南</text>
138
+ <text class="uv-collapse-content">涵盖uniapp各个方面,给开发者方向指导和设计理念</text>
139
+ </uv-collapse-item>
140
+ <uv-collapse-item title="组件全面">
141
+ <uv-icon name="tags-fill" size="20" slot="icon"></uv-icon>
142
+ <text class="uv-collapse-content">组件功能丰富,多端兼容。让您快速集成,开箱即用</text>
143
+ </uv-collapse-item>
144
+ <uv-collapse-item title="众多利器">
145
+ <text slot="value" class="uv-page__item__title__slot-title">自定义内容</text>
146
+ <text class="uv-collapse-content">众多JS小工具,是您开发过程中召之即来的利器</text>
147
+ </uv-collapse-item>
148
+ </uv-collapse>
149
+ </view>
150
+ </template>
151
+ ```
152
+
153
+ ## API {#api}
154
+
155
+ ### Collapse Props {#props}
156
+
157
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
158
+ | --- | --- | --- | --- | --- |
159
+ | value | 当前展开的 `uv-collapse-item` 的 `name`;非手风琴为数组(如 `['2']`),手风琴为字符串/数字 | String \| Number \| Array | - | - |
160
+ | accordion | 是否手风琴模式 | Boolean | false | true \| false |
161
+ | border | 是否显示外边框 | Boolean | true | true \| false |
162
+
163
+ ### CollapseItem Props {#item-props}
164
+
165
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
166
+ | --- | --- | --- | --- | --- |
167
+ | title | 面板标题 | String | - | - |
168
+ | value | 标题右侧内容 | String | - | - |
169
+ | label | 标题下方描述信息 | String | - | - |
170
+ | disabled | 是否禁止展开/收起 | Boolean | false | true \| false |
171
+ | isLink | 是否展示右侧箭头并开启点击反馈 | Boolean | true | true \| false |
172
+ | clickable | 是否开启点击反馈 | Boolean | true | true \| false |
173
+ | border | 是否显示内边框 | Boolean | true | true \| false |
174
+ | name | 唯一标识符(未设置则使用索引) | String \| Number | - | - |
175
+ | icon | 标题左侧图标(内置图标或图片) | String | - | - |
176
+ | duration | 展开/收起过渡时间(ms) | Number | 300 | - |
177
+
178
+ ### Collapse Events {#events}
179
+
180
+ > 请在 `uv-collapse` 上监听。
181
+
182
+ | 事件名 | 说明 | 回调参数 |
183
+ | --- | --- | --- |
184
+ | @change | 当前激活面板展开/关闭时触发 | activeNames:String \| Array |
185
+ | @open | 当前激活面板展开时触发 | activeNames:String \| Array |
186
+ | @close | 当前激活面板关闭时触发 | activeNames:String \| Array |
187
+
188
+ ### Collapse Methods {#methods}
189
+
190
+ > 需通过 `ref` 调用。
191
+
192
+ | 方法 | 说明 |
193
+ | --- | --- |
194
+ | init | 重新初始化内部高度计算(用于异步获取内容,需配合 `this.$nextTick()`) |
195
+
196
+ ### CollapseItem Slots {#slots}
197
+
198
+ (微信小程序不支持 slot 写法)
199
+
200
+ | 名称 | 说明 |
201
+ | --- | --- |
202
+ | default | 主体内容 |
203
+ | title | 标题内容 |
204
+ | icon | 左侧 icon |
205
+ | value | 右侧 value |
206
+ | right-icon | 右侧 icon |
@@ -0,0 +1,122 @@
1
+ ---
2
+ group: 基础
3
+ category: Foundation
4
+ title: Color
5
+ subtitle: 色彩
6
+ description: uv-ui 调色板与 SCSS 颜色变量,用于统一视觉效果。
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
+ uv-ui 提供统一的调色板和 SCSS 变量,组件内部使用统一配色,便于保持界面风格一致。
16
+
17
+ **注意:** uv-ui 使用 SCSS,需在 Hbuilder X 中安装「scss/sass 编译」插件(工具 → 插件安装)。安装后若不生效,请重启 Hbuilder X。
18
+
19
+ ## 平台兼容性 {#platform}
20
+
21
+ | App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
22
+ | --- | --- | --- | --- | --- | --- |
23
+ | √ | √ | √ | √ | √ | √ |
24
+
25
+ ## 主题色 {#theme}
26
+
27
+ primary、success、error、warning、info 为主题色,分别对应蓝、绿、红、黄、灰。每个主题色有 `disabled`、`dark`、`light` 状态:
28
+
29
+ - **disabled**:禁用
30
+ - **dark**:加深(如按下态)
31
+ - **light**:变浅(如镂空背景)
32
+
33
+ 以 Button 为例:`type="primary"` 用 primary;按下用 primary-dark;`plain=true` 背景用 primary-light;禁用用 primary-disabled。
34
+
35
+ ## 主色 {#primary}
36
+
37
+ 主色为蓝色,表示鲜明、积极。
38
+
39
+ | 名称 | 色值 |
40
+ | --- | --- |
41
+ | Primary | #3c9cff |
42
+ | Dark | #398ade |
43
+ | Disabled | #9acafc |
44
+ | Light | #ecf5ff |
45
+
46
+ ## 辅助色 {#auxiliary}
47
+
48
+ | 色系 | 主色 | Dark | Disabled | Light |
49
+ | --- | --- | --- | --- | --- |
50
+ | Error | #f56c6c | #e45656 | #f7b2b2 | #fef0f0 |
51
+ | Warning | #f9ae3d | #f1a532 | #f9d39b | #fdf6ec |
52
+ | Success | #5ac725 | #53c21d | #a9e08f | #f5fff0 |
53
+ | Info | #909399 | #767a82 | #c4c6c9 | #f4f4f5 |
54
+
55
+ ## SCSS 变量 {#scss-vars}
56
+
57
+ 以下变量已由 uv-ui 全局引入,可直接在 scss 中使用:
58
+
59
+ ### 主题色变量
60
+
61
+ ```scss
62
+ /* 主题色 */
63
+ $uv-primary: #3c9cff;
64
+ $uv-warning: #f9ae3d;
65
+ $uv-success: #5ac725;
66
+ $uv-error: #f56c6c;
67
+ $uv-info: #909399;
68
+
69
+ /* 主色变体 */
70
+ $uv-primary-dark: #398ade;
71
+ $uv-primary-disabled: #9acafc;
72
+ $uv-primary-light: #ecf5ff;
73
+
74
+ /* 辅助色变体 */
75
+ $uv-warning-dark: #f1a532;
76
+ $uv-warning-disabled: #f9d39b;
77
+ $uv-warning-light: #fdf6ec;
78
+ $uv-success-dark: #53c21d;
79
+ $uv-success-disabled: #a9e08f;
80
+ $uv-success-light: #f5fff0;
81
+ $uv-error-dark: #e45656;
82
+ $uv-error-disabled: #f7b2b2;
83
+ $uv-error-light: #fef0f0;
84
+ $uv-info-dark: #767a82;
85
+ $uv-info-disabled: #c4c6c9;
86
+ $uv-info-light: #f4f4f5;
87
+
88
+ /* 使用示例 */
89
+ .title {
90
+ color: $uv-primary;
91
+ }
92
+ ```
93
+
94
+ ### 文字颜色
95
+
96
+ | 变量 | 色值 | 用途 |
97
+ | --- | --- | --- |
98
+ | $uv-main-color | #303133 | 主要文字(标题等) |
99
+ | $uv-content-color | #606266 | 常规文字(正文) |
100
+ | $uv-tips-color | #909193 | 次要文字(提示) |
101
+ | $uv-light-color | #c0c4cc | 占位文字 |
102
+ | $uv-disabled-color | #c8c9cc | 禁用文字 |
103
+
104
+ ```scss
105
+ .title {
106
+ color: $uv-main-color;
107
+ }
108
+ ```
109
+
110
+ ### 背景与边框
111
+
112
+ | 变量 | 色值 | 用途 |
113
+ | --- | --- | --- |
114
+ | $uv-bg-color | #f3f4f6 | 背景色 |
115
+ | $uv-border-color | #e4e7ed | 边框色 |
116
+
117
+ ```scss
118
+ .item {
119
+ background: $uv-bg-color;
120
+ border: 1px solid $uv-border-color;
121
+ }
122
+ ```
@@ -0,0 +1,169 @@
1
+ ---
2
+ group: 数据
3
+ category: Components
4
+ title: CountDown
5
+ subtitle: 倒计时
6
+ description: 用于展示活动截止等场景的剩余时间,支持格式化、毫秒级渲染与 ref 手动控制。
7
+ demo:
8
+ cols: 2
9
+ ---
10
+
11
+ ## 何时使用 {#when-to-use}
12
+
13
+ `uv-count-down` 常用于活动截止、支付倒计时等场景,通过数字变化提供时间紧迫感,提示用户完成操作。
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-count-down`
24
+
25
+ ## 代码演示 {#examples}
26
+
27
+ ### 基本使用 {#basic}
28
+
29
+ 通过 `time` 设置倒计时长(单位 ms),通过 `format` 设置展示格式。
30
+
31
+ ```vue
32
+ <template>
33
+ <uv-count-down :time="30 * 60 * 60 * 1000" format="HH:mm:ss"></uv-count-down>
34
+ </template>
35
+ ```
36
+
37
+ ### 自定义格式 {#custom-format}
38
+
39
+ 通过监听 `@change` 回调值自定义展示内容。
40
+
41
+ ```vue
42
+ <template>
43
+ <uv-count-down
44
+ :time="30 * 60 * 60 * 1000"
45
+ format="DD:HH:mm:ss"
46
+ autoStart
47
+ millisecond
48
+ @change="onChange"
49
+ >
50
+ <view class="time">
51
+ <text class="time__item">{{ timeData.days }}&nbsp;天</text>
52
+ <text class="time__item">{{ timeData.hours > 10 ? timeData.hours : '0' + timeData.hours }}&nbsp;时</text>
53
+ <text class="time__item">{{ timeData.minutes }}&nbsp;分</text>
54
+ <text class="time__item">{{ timeData.seconds }}&nbsp;秒</text>
55
+ </view>
56
+ </uv-count-down>
57
+ </template>
58
+
59
+ <script>
60
+ export default {
61
+ data() {
62
+ return {
63
+ timeData: {}
64
+ }
65
+ },
66
+ methods: {
67
+ onChange(e) {
68
+ this.timeData = e
69
+ }
70
+ }
71
+ }
72
+ </script>
73
+
74
+ <style lang="scss">
75
+ .time {
76
+ // #ifndef APP-NVUE
77
+ display: flex;
78
+ // #endif
79
+ flex-direction: row;
80
+ align-items: center;
81
+ &__item {
82
+ color: red;
83
+ font-size: 30rpx;
84
+ text-align: center;
85
+ }
86
+ }
87
+ </style>
88
+ ```
89
+
90
+ ### 毫秒级渲染 {#millisecond}
91
+
92
+ 通过 `millisecond` 开启毫秒级倒计时展示。
93
+
94
+ ```vue
95
+ <uv-count-down :time="30 * 60 * 60 * 1000" format="HH:mm:ss:SSS" autoStart millisecond></uv-count-down>
96
+ ```
97
+
98
+ ### 手动控制 {#methods}
99
+
100
+ 通过 `ref` 手动控制 `reset / start / pause`,并将 `autoStart` 设为 `false`。
101
+
102
+ ```vue
103
+ <template>
104
+ <uv-count-down
105
+ ref="countDown"
106
+ :time="10 * 1000"
107
+ format="ss:SSS"
108
+ :autoStart="false"
109
+ millisecond
110
+ @change="onChange"
111
+ ></uv-count-down>
112
+ <button type="primary" size="small" @click="reset">重置</button>
113
+ <button type="primary" size="small" @click="start">开始</button>
114
+ <button type="primary" size="small" @click="pause">暂停</button>
115
+ </template>
116
+
117
+ <script>
118
+ export default {
119
+ data() {
120
+ return {
121
+ timeData: {}
122
+ }
123
+ },
124
+ methods: {
125
+ start() {
126
+ this.$refs.countDown.start()
127
+ },
128
+ pause() {
129
+ this.$refs.countDown.pause()
130
+ },
131
+ reset() {
132
+ this.$refs.countDown.reset()
133
+ },
134
+ onChange(e) {
135
+ this.timeData = e
136
+ }
137
+ }
138
+ }
139
+ </script>
140
+ ```
141
+
142
+ ## API {#api}
143
+
144
+ ### CountDown Props {#props}
145
+
146
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
147
+ | --- | --- | --- | --- | --- |
148
+ | time | 倒计时时长(单位 ms) | String \| Number | 0 | - |
149
+ | format | 时间格式:DD/HH/mm/ss/SSS(毫秒) | String | HH:mm:ss | - |
150
+ | autoStart | 是否自动开始倒计时 | Boolean | true | true \| false |
151
+ | millisecond | 是否展示毫秒倒计时 | Boolean | false | true \| false |
152
+ | customStyle | 自定义外部样式 | Object | - | - |
153
+
154
+ ### CountDown Methods {#api-methods}
155
+
156
+ 需要通过 `ref` 获取组件实例后调用。
157
+
158
+ | 名称 | 说明 |
159
+ | --- | --- |
160
+ | start | 开始倒计时 |
161
+ | pause | 暂停倒计时 |
162
+ | reset | 重置倒计时 |
163
+
164
+ ### CountDown Events {#events}
165
+
166
+ | 事件名 | 说明 | 回调参数 |
167
+ | --- | --- | --- |
168
+ | @change | 倒计时过程中变化触发 | time:剩余时间 |
169
+ | @finish | 倒计时结束触发 | - |
@@ -0,0 +1,125 @@
1
+ ---
2
+ group: 数据
3
+ category: Components
4
+ title: CountTo
5
+ subtitle: 数字滚动
6
+ description: 将数字从起始值滚动到目标值,支持小数位、千分位分隔符、缓动与手动控制。
7
+ demo:
8
+ cols: 2
9
+ ---
10
+
11
+ ## 何时使用 {#when-to-use}
12
+
13
+ `uv-count-to` 适用于数字递增展示的场景,如金额、统计指标等,通过滚动过渡提升动效表现。
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-count-to`
24
+
25
+ ## 代码演示 {#examples}
26
+
27
+ ### 基本使用 {#basic}
28
+
29
+ 通过 `startVal` 设置开始值,`endVal` 设置结束值。
30
+
31
+ ```vue
32
+ <uv-count-to :startVal="30" :endVal="500"></uv-count-to>
33
+ ```
34
+
35
+ ### 设置滚动参数 {#options}
36
+
37
+ - `duration`:滚动耗时(ms)
38
+ - `useEasing`:结束是否缓动(默认 true)
39
+
40
+ ```vue
41
+ <uv-count-to :start-val="30" :end-val="500" :duration="2000" :useEasing="false"></uv-count-to>
42
+ ```
43
+
44
+ ### 显示小数位 {#decimals}
45
+
46
+ - `decimals`:小数位数(若 startVal/endVal 有小数,建议设置为相同小数位)
47
+ - `decimal`:小数分隔符
48
+
49
+ ```vue
50
+ <uv-count-to :startVal="30" :endVal="500.55" :decimals="2" decimal="."></uv-count-to>
51
+ ```
52
+
53
+ ### 千分位分隔符 {#separator}
54
+
55
+ 通过 `separator` 配置千分位分隔符(如 `,`),当 `endVal` 超过 1000 时生效。
56
+
57
+ ```vue
58
+ <uv-count-to :endVal="1542" separator=","></uv-count-to>
59
+ ```
60
+
61
+ ### 控制滚动时机 {#autoplay}
62
+
63
+ 通过 `autoplay` 控制是否初始化即滚动;若为 false,可通过 `ref` 调用 `start / stop / restart`。
64
+
65
+ ```vue
66
+ <template>
67
+ <view>
68
+ <uv-count-to ref="countTo" :endVal="5000.55" :autoplay="false"></uv-count-to>
69
+ <button type="primary" size="small" @click="stop">暂停</button>
70
+ <button type="primary" size="small" @click="start">开始</button>
71
+ <button type="primary" size="small" @click="restart">继续</button>
72
+ </view>
73
+ </template>
74
+
75
+ <script>
76
+ export default {
77
+ methods: {
78
+ start() {
79
+ this.$refs.countTo.start()
80
+ },
81
+ stop() {
82
+ this.$refs.countTo.stop()
83
+ },
84
+ restart() {
85
+ this.$refs.countTo.restart()
86
+ }
87
+ }
88
+ }
89
+ </script>
90
+ ```
91
+
92
+ ## API {#api}
93
+
94
+ ### CountTo Props {#props}
95
+
96
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
97
+ | --- | --- | --- | --- | --- |
98
+ | startVal | 开始值 | String \| Number | 0 | - |
99
+ | endVal | 结束值 | String \| Number | 0 | - |
100
+ | duration | 滚动耗时(ms) | String \| Number | 2000 | - |
101
+ | autoplay | 是否自动开始滚动 | Boolean | true | true \| false |
102
+ | decimals | 小数位数 | String \| Number | 0 | - |
103
+ | decimal | 小数分隔符 | String | . | - |
104
+ | useEasing | 结束是否缓动 | Boolean | true | true \| false |
105
+ | color | 字体颜色 | String | #606266 | - |
106
+ | fontSize | 字体大小(单位默认 px) | String \| Number | 22 | - |
107
+ | bold | 字体是否加粗 | Boolean | false | true \| false |
108
+ | separator | 千分位分隔符 | String | - | - |
109
+ | customStyle | 自定义外部样式 | Object | - | - |
110
+
111
+ ### CountTo Methods {#api-methods}
112
+
113
+ 需要通过 `ref` 获取组件实例后调用。
114
+
115
+ | 名称 | 说明 |
116
+ | --- | --- |
117
+ | start | autoplay 为 false 时启动滚动(从头开始) |
118
+ | restart | 暂停状态继续滚动;或滚动中暂停 |
119
+ | stop | 暂停滚动 |
120
+
121
+ ### CountTo Events {#events}
122
+
123
+ | 事件名 | 说明 | 回调参数 |
124
+ | --- | --- | --- |
125
+ | @end | 数值滚动到目标值时触发 | - |