@gmcb/uv-ui 0.2.26 → 0.3.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/CHANGELOG.md +8 -0
- package/LICENSE +21 -21
- package/README.md +95 -141
- package/components/uv-overlay/props.js +29 -24
- package/components/uv-overlay/uv-overlay.vue +87 -85
- package/docs/api/configs/color.md +52 -0
- package/docs/api/index.md +77 -0
- package/docs/api/mixins/mpShare.md +95 -0
- package/docs/api/request/apiManage.md +88 -0
- package/docs/api/request/http.md +451 -0
- package/docs/api/utils/colorSwitch.md +78 -0
- package/docs/api/utils/debounce.md +104 -0
- package/docs/api/utils/fastUse.md +246 -0
- package/docs/api/utils/getRect.md +238 -0
- package/docs/api/utils/guid.md +41 -0
- package/docs/api/utils/index.md +55 -0
- package/docs/api/utils/intro.md +25 -0
- package/docs/api/utils/object.md +171 -0
- package/docs/api/utils/queryParams.md +68 -0
- package/docs/api/utils/random.md +23 -0
- package/docs/api/utils/randomArray.md +28 -0
- package/docs/api/utils/route.md +121 -0
- package/docs/api/utils/test.md +237 -0
- package/docs/api/utils/time.md +81 -0
- package/docs/api/utils/trim.md +24 -0
- package/docs/components/actionSheet.md +236 -0
- package/docs/components/addQQGroup.md +5 -0
- package/docs/components/album.md +91 -0
- package/docs/components/alert.md +83 -0
- package/docs/components/avatar.md +152 -0
- package/docs/components/backTop.md +181 -0
- package/docs/components/badge.md +117 -0
- package/docs/components/button.md +196 -0
- package/docs/components/calendar.md +398 -0
- package/docs/components/calendars.md +294 -0
- package/docs/components/cell.md +185 -0
- package/docs/components/checkbox.md +281 -0
- package/docs/components/circleProgress.md +5 -0
- package/docs/components/code.md +162 -0
- package/docs/components/codeInput.md +175 -0
- package/docs/components/collapse.md +250 -0
- package/docs/components/color.md +324 -0
- package/docs/components/common.md +126 -0
- package/docs/components/countDown.md +166 -0
- package/docs/components/countTo.md +140 -0
- package/docs/components/datetimePicker.md +283 -0
- package/docs/components/diff1.x.md +190 -0
- package/docs/components/divider.md +88 -0
- package/docs/components/downloadSetting.md +54 -0
- package/docs/components/dropDown.md +375 -0
- package/docs/components/empty.md +99 -0
- package/docs/components/feature.md +261 -0
- package/docs/components/form.md +736 -0
- package/docs/components/gap.md +49 -0
- package/docs/components/grid.md +225 -0
- package/docs/components/icon.md +101 -0
- package/docs/components/image.md +182 -0
- package/docs/components/index.md +110 -0
- package/docs/components/indexList.md +133 -0
- package/docs/components/input.md +250 -0
- package/docs/components/install.md +59 -0
- package/docs/components/intro.md +32 -0
- package/docs/components/keyboard.md +226 -0
- package/docs/components/layout.md +310 -0
- package/docs/components/line.md +85 -0
- package/docs/components/lineProgress.md +141 -0
- package/docs/components/link.md +89 -0
- package/docs/components/list.md +223 -0
- package/docs/components/loadMore.md +140 -0
- package/docs/components/loadingIcon.md +144 -0
- package/docs/components/loadingPage.md +92 -0
- package/docs/components/modal.md +230 -0
- package/docs/components/more.md +13 -0
- package/docs/components/navbar.md +192 -0
- package/docs/components/noNetwork.md +116 -0
- package/docs/components/noticeBar.md +131 -0
- package/docs/components/notify.md +204 -0
- package/docs/components/npmSetting.md +64 -0
- package/docs/components/numberBox.md +257 -0
- package/docs/components/nvue.md +170 -0
- package/docs/components/overlay.md +117 -0
- package/docs/components/parse.md +204 -0
- package/docs/components/pickColor.md +112 -0
- package/docs/components/picker.md +357 -0
- package/docs/components/popup.md +221 -0
- package/docs/components/problem.md +300 -0
- package/docs/components/qrcode.md +169 -0
- package/docs/components/quickstart.md +33 -0
- package/docs/components/radio.md +256 -0
- package/docs/components/rate.md +128 -0
- package/docs/components/read.md +163 -0
- package/docs/components/readMore.md +227 -0
- package/docs/components/resource.md +17 -0
- package/docs/components/scrollList.md +218 -0
- package/docs/components/search.md +160 -0
- package/docs/components/setting.md +111 -0
- package/docs/components/settingDesc.md +66 -0
- package/docs/components/skeleton.md +105 -0
- package/docs/components/skeletons.md +323 -0
- package/docs/components/slider.md +157 -0
- package/docs/components/steps.md +189 -0
- package/docs/components/sticky.md +76 -0
- package/docs/components/subsection.md +183 -0
- package/docs/components/swipeAction.md +279 -0
- package/docs/components/swiper.md +352 -0
- package/docs/components/switch.md +216 -0
- package/docs/components/tabbar.md +263 -0
- package/docs/components/table.md +5 -0
- package/docs/components/tabs.md +364 -0
- package/docs/components/tag.md +227 -0
- package/docs/components/testPic.md +20 -0
- package/docs/components/text.md +157 -0
- package/docs/components/textarea.md +121 -0
- package/docs/components/toast.md +124 -0
- package/docs/components/tooltip.md +98 -0
- package/docs/components/transition.md +404 -0
- package/docs/components/upload.md +253 -0
- package/docs/components/vtabs.md +332 -0
- package/docs/components/vueUse.md +45 -0
- package/docs/components/vuexDetail.md +103 -0
- package/docs/components/waterfall.md +651 -0
- package/docs/faq/index.md +53 -0
- package/docs/guide/codeHint.md +44 -0
- package/docs/guide/customIcon.md +168 -0
- package/docs/guide/demo.md +92 -0
- package/docs/guide/design.md +56 -0
- package/docs/guide/globalVariable.md +239 -0
- package/docs/guide/i18n.md +194 -0
- package/docs/guide/index.md +28 -0
- package/docs/guide/note.md +74 -0
- package/docs/guide/safeAreaInset.md +64 -0
- package/docs/guide/theme.md +67 -0
- package/docs/index.md +88 -0
- package/libs/config/config.js +0 -10
- package/libs/css/color.scss +15 -14
- package/package.json +7 -2
- package/theme.scss +2 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
## ReadMore 展开阅读更多 <to-api/>
|
|
2
|
+
|
|
3
|
+
<demo-model url="/pages/componentsC/readMore/readMore"></demo-model>
|
|
4
|
+
|
|
5
|
+
::: tip ✈
|
|
6
|
+
|
|
7
|
+
**组件名:uv-read-more**
|
|
8
|
+
|
|
9
|
+
[点击下载&安装](https://ext.dcloud.net.cn/plugin?name=uv-read-more)
|
|
10
|
+
|
|
11
|
+
:::
|
|
12
|
+
|
|
13
|
+
该组件一般用于内容较长,预先收起一部分,点击展开全部内容的场景。
|
|
14
|
+
|
|
15
|
+
### 平台兼容性
|
|
16
|
+
|
|
17
|
+
|App(vue)|App(nvue)|H5|小程序|VUE2|VUE3|
|
|
18
|
+
|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
19
|
+
|√|√|√|√|√|√|
|
|
20
|
+
|
|
21
|
+
### 基本使用
|
|
22
|
+
|
|
23
|
+
- 直接通过slot传入正文内容。
|
|
24
|
+
- 使用`showHeight`可以配置一个高度,单位可以是`px`或`rpx`,默认`400px`。内容高度超出该值,才会出现“展开阅读全文”按钮。
|
|
25
|
+
- 设置属性`toggle`为`true`或`false`,默认`true`,可以配置展开后是否显示收起的按钮。
|
|
26
|
+
|
|
27
|
+
```vue
|
|
28
|
+
<template>
|
|
29
|
+
<uv-read-more show-height="200rpx" :toggle="true">
|
|
30
|
+
<view class="content">
|
|
31
|
+
<view>丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。</view>
|
|
32
|
+
<view>明月几时有?把酒问青天。不知天上宫阙,今夕是何年。</view>
|
|
33
|
+
<view>我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。</view>
|
|
34
|
+
<view>转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?</view>
|
|
35
|
+
<view>人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。</view>
|
|
36
|
+
</view>
|
|
37
|
+
</uv-read-more>
|
|
38
|
+
</template>
|
|
39
|
+
<style scoped>
|
|
40
|
+
.content {
|
|
41
|
+
padding: 0 30rpx;
|
|
42
|
+
}
|
|
43
|
+
</style>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 配合解析器使用
|
|
47
|
+
|
|
48
|
+
- **兼容性问题处理:** 由于一些微信小程序平台的渲染能力的问题,在解析[uv-parse](/components/parse.html)组件内容时会比较耗时,导致`read-more`组件内部无法准确得知内容的高度,而出现计算错误,这种情况下,我们需要借助`uv-parse`组件的`@load`(**内容多为文字时**)或者`@ready`(**内容多为图片时,可能会有较大延时**)事件,通过`ref`重新初始化`read-more`组件的高度,如下:
|
|
49
|
+
- 如果因为内容图片较多,可以再在`@ready`回调中适当的给个延迟,这样就可以保证展开完整显示。
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<template>
|
|
53
|
+
<uv-read-more ref="readMore">
|
|
54
|
+
<uv-parse class="content" :content="content" @ready="ready"></uv-parse>
|
|
55
|
+
</uv-read-more>
|
|
56
|
+
</template>
|
|
57
|
+
<script setup>
|
|
58
|
+
import { ref } from 'vue';
|
|
59
|
+
|
|
60
|
+
const readMore = ref(null);
|
|
61
|
+
const content = ref(`<p class="content">
|
|
62
|
+
<p>丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。</p>
|
|
63
|
+
<p>明月几时有?把酒问青天。不知天上宫阙,今夕是何年。</p>
|
|
64
|
+
<p>我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。</p>
|
|
65
|
+
<p>转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?</p>
|
|
66
|
+
<p>人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。</p>
|
|
67
|
+
<p><img src="https://via.placeholder.com/200x200.png/2878ff" /></p>
|
|
68
|
+
<p><img src="https://via.placeholder.com/200x200.png/2878ff" /></p>
|
|
69
|
+
<p><img src="https://via.placeholder.com/200x200.png/2878ff" /></p>
|
|
70
|
+
<p><img src="https://via.placeholder.com/200x200.png/2878ff" /></p>
|
|
71
|
+
<p>译文:丙辰年的中秋节,高兴地喝酒直到第二天早晨,喝到大醉,写了这首词,同时思念弟弟苏辙。明月从什么时候才开始出现的?我端起酒杯遥问苍天。不知道在天上的宫殿,何年何月。我想要乘御清风回到天上,又恐怕在美玉砌成的楼宇,受不住高耸九天的寒冷。翩翩起舞玩赏着月下清影,哪像是在人间。月儿转过朱红色的楼阁,低低地挂在雕花的窗户上,照着没有睡意的自己。明月不该对人们有什么怨恨吧,为什么偏在人们离别时才圆呢?人有悲欢离合的变迁,月有阴晴圆缺的转换,这种事自古来难以周全。只希望这世上所有人的亲人能平安健康,即便相隔千里,也能共享这美好的月光。</p>
|
|
72
|
+
</p>`);
|
|
73
|
+
function ready() {
|
|
74
|
+
// 由于图片较多,可以再适当的给一个延迟
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
readMore.value.init();
|
|
77
|
+
}, 1000);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
</script>
|
|
81
|
+
<style scoped>
|
|
82
|
+
.content {
|
|
83
|
+
line-height: 48rpx;
|
|
84
|
+
padding: 0 30rpx;
|
|
85
|
+
}
|
|
86
|
+
</style>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 异步初始化
|
|
90
|
+
|
|
91
|
+
有时候需要展示的内容是从后端获取的,组件内部的`onLoad`生命周期初始化时,请求尚未回来,会导致内容的高度在初始化有误差。可以在请求完毕渲染后通过 `nextTick()` 等待页面更新,再通过模板 `ref` 调用组件的 `init` 方法重新初始化。
|
|
92
|
+
|
|
93
|
+
```vue
|
|
94
|
+
<template>
|
|
95
|
+
<uv-read-more show-height="200px" :toggle="false" ref="readMore">
|
|
96
|
+
<rich-text class="content" :nodes="content"></rich-text>
|
|
97
|
+
</uv-read-more>
|
|
98
|
+
</template>
|
|
99
|
+
<script setup>
|
|
100
|
+
import { nextTick, ref } from 'vue';
|
|
101
|
+
import { onLoad } from '@dcloudio/uni-app';
|
|
102
|
+
|
|
103
|
+
const readMore = ref(null);
|
|
104
|
+
const content = ref('');
|
|
105
|
+
const getContent = ref(`<p class="content">
|
|
106
|
+
<p>丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。</p>
|
|
107
|
+
<p>明月几时有?把酒问青天。不知天上宫阙,今夕是何年。</p>
|
|
108
|
+
<p>我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。</p>
|
|
109
|
+
<p>转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?</p>
|
|
110
|
+
<p>人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。</p>
|
|
111
|
+
<p>译文:丙辰年的中秋节,高兴地喝酒直到第二天早晨,喝到大醉,写了这首词,同时思念弟弟苏辙。明月从什么时候才开始出现的?我端起酒杯遥问苍天。不知道在天上的宫殿,何年何月。我想要乘御清风回到天上,又恐怕在美玉砌成的楼宇,受不住高耸九天的寒冷。翩翩起舞玩赏着月下清影,哪像是在人间。月儿转过朱红色的楼阁,低低地挂在雕花的窗户上,照着没有睡意的自己。明月不该对人们有什么怨恨吧,为什么偏在人们离别时才圆呢?人有悲欢离合的变迁,月有阴晴圆缺的转换,这种事自古来难以周全。只希望这世上所有人的亲人能平安健康,即便相隔千里,也能共享这美好的月光。</p>
|
|
112
|
+
</p>`);
|
|
113
|
+
onLoad(async () => {
|
|
114
|
+
// 模拟后端请求
|
|
115
|
+
content.value = await getData();
|
|
116
|
+
;
|
|
117
|
+
nextTick(() => {
|
|
118
|
+
readMore.value.init();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
function getData() {
|
|
122
|
+
uni.showLoading({
|
|
123
|
+
title: '加载中...'
|
|
124
|
+
});
|
|
125
|
+
return new Promise(resolve => {
|
|
126
|
+
setTimeout(() => {
|
|
127
|
+
resolve(getContent.value);
|
|
128
|
+
uni.hideLoading();
|
|
129
|
+
}, 1000);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
</script>
|
|
134
|
+
<style scoped>
|
|
135
|
+
.content {
|
|
136
|
+
line-height: 48rpx;
|
|
137
|
+
padding: 0 30rpx;
|
|
138
|
+
}
|
|
139
|
+
</style>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 自定义样式
|
|
143
|
+
|
|
144
|
+
- 此组件上边部分有一个白色虚化的阴影,用以将点击区域与文字内容进行融合,如果您不想要这个阴影,可以调整`shadowStyle`对象,此对象内部如下:
|
|
145
|
+
- 如果您不想要阴影,将`backgroundImage`设置为`none`即可,关于`paddingTop`和`marginTop`自行调整至合适数值即可。
|
|
146
|
+
|
|
147
|
+
```vue
|
|
148
|
+
<template>
|
|
149
|
+
<uv-read-more show-height="200rpx" :shadowStyle="shadowStyle">
|
|
150
|
+
<view class="content">
|
|
151
|
+
<view>丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。</view>
|
|
152
|
+
<view>明月几时有?把酒问青天。不知天上宫阙,今夕是何年。</view>
|
|
153
|
+
<view>我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。</view>
|
|
154
|
+
<view>转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?</view>
|
|
155
|
+
<view>人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。</view>
|
|
156
|
+
</view>
|
|
157
|
+
</uv-read-more>
|
|
158
|
+
</template>
|
|
159
|
+
<script setup>
|
|
160
|
+
import { computed } from 'vue';
|
|
161
|
+
|
|
162
|
+
const shadowStyle = computed(() => {
|
|
163
|
+
return {
|
|
164
|
+
// #ifndef APP-NVUE
|
|
165
|
+
backgroundImage: "linear-gradient(-180deg, rgba(255, 255, 255, 0) 0%, #fff 80%)",
|
|
166
|
+
// #endif
|
|
167
|
+
// #ifdef APP-NVUE
|
|
168
|
+
// nvue上不支持设置复杂的backgroundImage属性
|
|
169
|
+
backgroundImage: "linear-gradient(to top, #fff, rgba(255, 255, 255, 0.5))",
|
|
170
|
+
// #endif
|
|
171
|
+
paddingTop: "100px",
|
|
172
|
+
marginTop: "-100px"
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
</script>
|
|
177
|
+
<style scoped>
|
|
178
|
+
.content {
|
|
179
|
+
padding: 0 30rpx;
|
|
180
|
+
}
|
|
181
|
+
</style>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 完整示例
|
|
185
|
+
|
|
186
|
+
::: tip 完整示例下载地址
|
|
187
|
+
|
|
188
|
+
[https://ext.dcloud.net.cn/plugin?name=uv-ui](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
189
|
+
|
|
190
|
+
:::
|
|
191
|
+
|
|
192
|
+
### API
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
### ReadMore Props
|
|
196
|
+
|
|
197
|
+
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
|
198
|
+
|:- |:- |:- |:- |:- |
|
|
199
|
+
| showHeight | 内容超出此高度才会显示展开全文按钮,单位rpx | String | Number | 400 | - |
|
|
200
|
+
| toggle | 展开后是否显示收起按钮 | Boolean | false | true |false |
|
|
201
|
+
| closeText | 关闭时的提示文字 | String | 展开阅读全文 | - |
|
|
202
|
+
| openText | 展开时的提示文字 | String | 收起 | - |
|
|
203
|
+
| color | 提示文字的颜色 | String | #2979ff | - |
|
|
204
|
+
| fontSize | 提示文字的大小,默认单位px | String | Number | 14 | - |
|
|
205
|
+
| shadowStyle | 对阴影的自定义处理,对象形式 | Object | 见上方说明 | - |
|
|
206
|
+
| textIndent | 段落首行缩进的字符个数 | String | 2em | - |
|
|
207
|
+
| name | 用于在`open`和`close`事件中当作回调参数返回 | String | Number | - | - |
|
|
208
|
+
|
|
209
|
+
### ReadMore Methods
|
|
210
|
+
|
|
211
|
+
| 名称 | 说明 |
|
|
212
|
+
|:- |:- |
|
|
213
|
+
| init | 重新初始化组件内部高度计算过程,如果内嵌[uv-parse](/components/parse.html)组件时可能需要用到 |
|
|
214
|
+
|
|
215
|
+
### ReadMore Events
|
|
216
|
+
|
|
217
|
+
| 事件名| 说明 | 回调参数 |
|
|
218
|
+
| :- | :- | :- |
|
|
219
|
+
| @open | 内容被展开时触发 | name - props中传入的`name`参数值 |
|
|
220
|
+
| @close | 内容被收起时触发 | name - props中传入的`name`参数值 |
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
<style scoped>
|
|
224
|
+
h3[id=readmore-methods] + table thead tr th:nth-child(2){
|
|
225
|
+
width: 70%;
|
|
226
|
+
}
|
|
227
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# 资源下载
|
|
2
|
+
|
|
3
|
+
这里记录 uv-ui 相关设计资源和框架资源下载入口。
|
|
4
|
+
|
|
5
|
+
## 设计资源
|
|
6
|
+
|
|
7
|
+
| 资源 | 说明 | 下载 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Sketch Template | Sketch 组件库资源,适用于交互设计阶段调用常用组件。 | [下载](https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/cloudstorage/28c31690-f062-4b44-ab4c-695222a21d13.sketch) |
|
|
10
|
+
| Axure Template | Axure 组件库资源,适用于交互设计阶段调用常用组件。 | [下载](https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/cloudstorage/f2447df2-6d07-4f60-b25a-d739fb014e54.rp) |
|
|
11
|
+
|
|
12
|
+
## 框架资源
|
|
13
|
+
|
|
14
|
+
| 资源 | 说明 | 下载 |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Empty 组件配套占位图 | 缺省图资源,包含图片和 Sketch 源文件。 | [下载](https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/cloudstorage/108d0ada-8117-45ff-ad51-09eb6b057fa7.zip) |
|
|
17
|
+
| uv-ui icon | 基于字体的图标集。 | [下载](https://mp-31ed6237-7b7b-4597-8448-a53d6d6031cf.cdn.bspapp.com/uvui/font_4150758_qns1usrtuqh.zip) |
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
## ScrollList 横向滚动列表 <to-api/>
|
|
2
|
+
|
|
3
|
+
<demo-model url="/pages/componentsC/scrollList/scrollList"></demo-model>
|
|
4
|
+
|
|
5
|
+
::: tip ✈
|
|
6
|
+
|
|
7
|
+
**组件名:uv-scroll-list**
|
|
8
|
+
|
|
9
|
+
[点击下载&安装](https://ext.dcloud.net.cn/plugin?name=uv-scroll-list)
|
|
10
|
+
|
|
11
|
+
:::
|
|
12
|
+
|
|
13
|
+
该组件一般用于同时展示多个商品、分类的场景,也可以完成左右滑动的列表,往往数量不确定,数量较多支持左右滚动。灵活配置,开箱即用。
|
|
14
|
+
|
|
15
|
+
### 平台兼容性
|
|
16
|
+
|
|
17
|
+
|App(vue)|App(nvue)|H5|小程序|VUE2|VUE3|
|
|
18
|
+
|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
19
|
+
|√|√|√|√|√|√|
|
|
20
|
+
|
|
21
|
+
:::warning 注意事项
|
|
22
|
+
|
|
23
|
+
> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
|
|
24
|
+
1. 本组件如果在其他组件(eg:`uv-vtabs`、`uv-popup`等组件)中使用,可以给外层套一个view标签进行控制宽度,这样就能保证组件内部计算无误,否则可能会出现被截取的现象。
|
|
25
|
+
:::
|
|
26
|
+
|
|
27
|
+
### 基本使用
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<uv-scroll-list>
|
|
32
|
+
<view v-for="(item, index) in list" :key="index">
|
|
33
|
+
<image :src="item.image" mode="heightFix" style="height: 200px;"></image>
|
|
34
|
+
</view>
|
|
35
|
+
</uv-scroll-list>
|
|
36
|
+
</template>
|
|
37
|
+
<script setup>
|
|
38
|
+
import { ref } from 'vue';
|
|
39
|
+
|
|
40
|
+
const list = ref([{
|
|
41
|
+
image: "https://via.placeholder.com/200x200.png/3c9cff/fff"
|
|
42
|
+
}, {
|
|
43
|
+
image: "https://via.placeholder.com/200x200.png/f9ae3d/fff"
|
|
44
|
+
}, {
|
|
45
|
+
image: "https://via.placeholder.com/200x200.png/5ac725/fff"
|
|
46
|
+
}, {
|
|
47
|
+
image: "https://via.placeholder.com/200x200.png/f56c6c/fff"
|
|
48
|
+
}, {
|
|
49
|
+
image: "https://via.placeholder.com/200x200.png/909399/fff"
|
|
50
|
+
}]);
|
|
51
|
+
|
|
52
|
+
</script>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 指示器的使用
|
|
56
|
+
|
|
57
|
+
- `indicator` 用于控制指示器是否显示
|
|
58
|
+
- `indicatorWidth` 用于控制指示器整体的宽度
|
|
59
|
+
- `indicatorBarWidth` 用于控制指示器滑块的宽度
|
|
60
|
+
- `indicatorColor` 指示器的颜色
|
|
61
|
+
- `indicatorActiveColor` 滑块的颜色
|
|
62
|
+
- `indicatorStyle` 指示器的位置/样式控制
|
|
63
|
+
|
|
64
|
+
```vue
|
|
65
|
+
<template>
|
|
66
|
+
<uv-scroll-list :indicator="true" indicatorColor="#fff0f0" indicatorActiveColor="#f56c6c">
|
|
67
|
+
<view v-for="(item, index) in list" :key="index">
|
|
68
|
+
<image :src="item.image" mode="heightFix" style="height: 200px;"></image>
|
|
69
|
+
</view>
|
|
70
|
+
</uv-scroll-list>
|
|
71
|
+
</template>
|
|
72
|
+
<script setup>
|
|
73
|
+
import { ref } from 'vue';
|
|
74
|
+
|
|
75
|
+
const list = ref([{
|
|
76
|
+
image: "https://via.placeholder.com/200x200.png/3c9cff/fff"
|
|
77
|
+
}, {
|
|
78
|
+
image: "https://via.placeholder.com/200x200.png/f9ae3d/fff"
|
|
79
|
+
}, {
|
|
80
|
+
image: "https://via.placeholder.com/200x200.png/5ac725/fff"
|
|
81
|
+
}, {
|
|
82
|
+
image: "https://via.placeholder.com/200x200.png/f56c6c/fff"
|
|
83
|
+
}, {
|
|
84
|
+
image: "https://via.placeholder.com/200x200.png/909399/fff"
|
|
85
|
+
}]);
|
|
86
|
+
|
|
87
|
+
</script>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 兼容性与性能
|
|
91
|
+
|
|
92
|
+
- 此组件是在`nvue`中引入`bindingx`,此库类似于微信小程序`wxs`,目的是让`js`运行在视图层,减少视图层和逻辑层的通信折损,在`nvue`中会有更好的体验。
|
|
93
|
+
- 此组件是在`APP-VUE`、`H5`、小程序中使用的是`wxs`。
|
|
94
|
+
- 其他平台则使用`js`完成。
|
|
95
|
+
|
|
96
|
+
当滑动到最左边/最右边时,uv-ui提供了事件`left`和`right`可供调用,用于对列表滑动到端点处的业务实现。
|
|
97
|
+
|
|
98
|
+
```vue
|
|
99
|
+
<template>
|
|
100
|
+
<uv-scroll-list @right="right" @left="left">
|
|
101
|
+
<view class="scroll-list" style="flex-direction: row;">
|
|
102
|
+
<view
|
|
103
|
+
class="scroll-list__goods-item"
|
|
104
|
+
v-for="(item, index) in list"
|
|
105
|
+
:key="index"
|
|
106
|
+
:class="[(index === 9) && 'scroll-list__goods-item--no-margin-right']"
|
|
107
|
+
>
|
|
108
|
+
<image class="scroll-list__goods-item__image" :src="item.image"></image>
|
|
109
|
+
<text class="scroll-list__goods-item__text">¥{{ item.price }}</text>
|
|
110
|
+
</view>
|
|
111
|
+
<view class="scroll-list__show-more">
|
|
112
|
+
<text class="scroll-list__show-more__text">查看更多</text>
|
|
113
|
+
</view>
|
|
114
|
+
</view>
|
|
115
|
+
</uv-scroll-list>
|
|
116
|
+
</template>
|
|
117
|
+
<script setup>
|
|
118
|
+
import { ref } from 'vue';
|
|
119
|
+
|
|
120
|
+
const list = ref([{
|
|
121
|
+
price: '230.5',
|
|
122
|
+
image: 'https://via.placeholder.com/60x60.png/3c9cff/fff'
|
|
123
|
+
}, {
|
|
124
|
+
price: '74.1',
|
|
125
|
+
image: 'https://via.placeholder.com/60x60.png/f9ae3d/fff'
|
|
126
|
+
}, {
|
|
127
|
+
price: '8457',
|
|
128
|
+
image: 'https://via.placeholder.com/60x60.png/5ac725/fff'
|
|
129
|
+
}, {
|
|
130
|
+
price: '1442',
|
|
131
|
+
image: 'https://via.placeholder.com/60x60.png/f56c6c/fff'
|
|
132
|
+
}, {
|
|
133
|
+
price: '541',
|
|
134
|
+
image: 'https://via.placeholder.com/60x60.png/909399/fff'
|
|
135
|
+
}, {
|
|
136
|
+
price: '234',
|
|
137
|
+
image: 'https://via.placeholder.com/60x60.png/3c9cff/fff'
|
|
138
|
+
}, {
|
|
139
|
+
price: '562',
|
|
140
|
+
image: 'https://via.placeholder.com/60x60.png/f9ae3d/fff'
|
|
141
|
+
}, {
|
|
142
|
+
price: '251.5',
|
|
143
|
+
image: 'https://via.placeholder.com/60x60.png/5ac725/fff'
|
|
144
|
+
}]);
|
|
145
|
+
function left() {
|
|
146
|
+
console.log('left');
|
|
147
|
+
}
|
|
148
|
+
function right() {
|
|
149
|
+
console.log('right');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
</script>
|
|
153
|
+
<style lang="scss">
|
|
154
|
+
@mixin flex($direction: row) {
|
|
155
|
+
/* #ifndef APP-NVUE */
|
|
156
|
+
display: flex;
|
|
157
|
+
/* #endif */
|
|
158
|
+
flex-direction: $direction;
|
|
159
|
+
}
|
|
160
|
+
.scroll-list {
|
|
161
|
+
@include flex(column);
|
|
162
|
+
&__goods-item {
|
|
163
|
+
margin-right: 20px;
|
|
164
|
+
&__image {
|
|
165
|
+
width: 60px;
|
|
166
|
+
height: 60px;
|
|
167
|
+
border-radius: 4px;
|
|
168
|
+
}
|
|
169
|
+
&__text {
|
|
170
|
+
color: #f56c6c;
|
|
171
|
+
text-align: center;
|
|
172
|
+
font-size: 12px;
|
|
173
|
+
margin-top: 5px;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
&__show-more {
|
|
177
|
+
background-color: #fff0f0;
|
|
178
|
+
border-radius: 3px;
|
|
179
|
+
padding: 3px 6px;
|
|
180
|
+
@include flex(column);
|
|
181
|
+
align-items: center;
|
|
182
|
+
&__text {
|
|
183
|
+
font-size: 12px;
|
|
184
|
+
width: 12px;
|
|
185
|
+
color: #f56c6c;
|
|
186
|
+
line-height: 16px;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
</style>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
::: tip 完整示例下载地址
|
|
194
|
+
|
|
195
|
+
[https://ext.dcloud.net.cn/plugin?name=uv-ui](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
196
|
+
|
|
197
|
+
:::
|
|
198
|
+
|
|
199
|
+
### API
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### ScrollList Props
|
|
203
|
+
|
|
204
|
+
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
|
205
|
+
|:- |:- |:- |:- |:- |
|
|
206
|
+
| indicatorWidth | 指示器的整体宽度 | String | Number | 50 | - |
|
|
207
|
+
| indicatorBarWidth | 滑块的宽度 | String | Number | 20 | - |
|
|
208
|
+
| indicator | 是否显示面板指示器 | Boolean | true | false |
|
|
209
|
+
| indicatorColor | 指示器非激活颜色 | String | #f2f2f2 | - |
|
|
210
|
+
| indicatorActiveColor | 指示器滑块颜色 | String | #3c9cff | - |
|
|
211
|
+
| indicatorStyle | 指示器样式,可通过bottom,left,right进行定位 | String | Object | - | - |
|
|
212
|
+
|
|
213
|
+
### ScrollList Events
|
|
214
|
+
|
|
215
|
+
| 事件名| 说明 | 回调参数 |
|
|
216
|
+
| :- | :- | :- |
|
|
217
|
+
| @left | 滑动到左边时触发 | - |
|
|
218
|
+
| @right | 滑动到右边时触发 | - |
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
## Search 搜索 <to-api/>
|
|
2
|
+
|
|
3
|
+
<demo-model url="/pages/componentsB/search/search"></demo-model>
|
|
4
|
+
|
|
5
|
+
::: tip ✈
|
|
6
|
+
|
|
7
|
+
**组件名:uv-search**
|
|
8
|
+
|
|
9
|
+
[点击下载&安装](https://ext.dcloud.net.cn/plugin?name=uv-search)
|
|
10
|
+
|
|
11
|
+
:::
|
|
12
|
+
|
|
13
|
+
搜索组件,集成了常见搜索框所需功能,用户可以一键引入,自定义内容,开箱即用。
|
|
14
|
+
|
|
15
|
+
### 平台兼容性
|
|
16
|
+
|
|
17
|
+
|App(vue)|App(nvue)|H5|小程序|VUE2|VUE3|
|
|
18
|
+
|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
19
|
+
|√|√|√|√|√|√|
|
|
20
|
+
|
|
21
|
+
### 基本使用
|
|
22
|
+
|
|
23
|
+
- 通过`placeholder`参数设置占位内容
|
|
24
|
+
- 通过`v-model`双向绑定一个**变量**值,设置初始化时搜索框的值,如果初始内容为空,那么请绑定一个值为空字符的变量。
|
|
25
|
+
|
|
26
|
+
**说明:** 因为是双向绑定的,所以当组件内容输入框内容变化时,也会实时的反映到绑定的`keyword`变量,这意味着,您**无需**监听`change`事件,
|
|
27
|
+
也能实时的得知输入框的内容。
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<uv-search placeholder="请输入搜索内容" v-model="keyword"></uv-search>
|
|
32
|
+
</template>
|
|
33
|
+
<script setup>
|
|
34
|
+
import { ref } from 'vue';
|
|
35
|
+
|
|
36
|
+
const keyword = ref('水调歌头');
|
|
37
|
+
|
|
38
|
+
</script>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 设置输入框形状
|
|
42
|
+
|
|
43
|
+
通过`shape`设置输入框两端的形状,`square`-方形带圆角,`round`(默认)-半圆形
|
|
44
|
+
|
|
45
|
+
```vue
|
|
46
|
+
<uv-search shape="round"></uv-search>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 是否开启清除控件
|
|
50
|
+
|
|
51
|
+
`clearabled`(默认为`true`)设置为`true`的话,输入框有内容时,右边会显示一个清除的图标
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<uv-search :clearabled="true"></uv-search>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 是否开启右边控件
|
|
58
|
+
|
|
59
|
+
该控件为类似按钮形式,可以设置为"搜索"或者"取消"等内容,如果开启动画效果,用户确认搜索后,该控件会自动消失
|
|
60
|
+
|
|
61
|
+
- `showAction`配置是否开启右边按钮控件
|
|
62
|
+
- `actionText`配置控件内容
|
|
63
|
+
- `animation`(默认为`false`)设置为`true`的话,失去焦点,或者点击控件按钮时,控件自动消失,并且带有动画效果
|
|
64
|
+
|
|
65
|
+
::: warning 说明
|
|
66
|
+
1. 如果不想点击右侧控件时自动消失,请把`animation`设置为`false`
|
|
67
|
+
2. 右侧控件的默认文字为"搜索"(它本意为控件,碰巧内容为"搜索"二字,并非说它就是一个搜索按钮),点击它的时候触发的是`custom`事件,而不是`search`事件
|
|
68
|
+
:::
|
|
69
|
+
|
|
70
|
+
```vue
|
|
71
|
+
<uv-search :showAction="true" actionText="搜索" :animation="true"></uv-search>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 自定义样式
|
|
75
|
+
|
|
76
|
+
- 通过`inputAlign`设置输入框内容的对其方式,和css的`text-align`同理
|
|
77
|
+
- 通过`borderColor`设置整个搜索组件的边框,只要配置了颜色,才会出现边框
|
|
78
|
+
- 通过`height`设置组件高度
|
|
79
|
+
- 通过`disabled`设置是否禁用输入框
|
|
80
|
+
- 通过`bgColor`设置是搜索组件背景颜色
|
|
81
|
+
|
|
82
|
+
```vue
|
|
83
|
+
<uv-search inputAlign="center" height="70"></uv-search>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 完整示例
|
|
87
|
+
|
|
88
|
+
::: tip 完整示例下载地址
|
|
89
|
+
|
|
90
|
+
[https://ext.dcloud.net.cn/plugin?name=uv-ui](https://ext.dcloud.net.cn/plugin?name=uv-ui)
|
|
91
|
+
|
|
92
|
+
:::
|
|
93
|
+
|
|
94
|
+
### API
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### Search Props
|
|
98
|
+
|
|
99
|
+
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
|
100
|
+
|:- |:- |:- |:- |:- |
|
|
101
|
+
| value / v-model | 双向绑定输入框搜索值 | String | - | - |
|
|
102
|
+
| shape | 搜索框形状,round-圆形,square-方形 | String | round | round | square |
|
|
103
|
+
| bgColor | 搜索框背景颜色 | String | #f2f2f2 | - |
|
|
104
|
+
| placeholder | 占位文字内容 | String | 请输入关键字 | - |
|
|
105
|
+
| clearabled | 是否启用清除控件 | Boolean | true | true | false |
|
|
106
|
+
| focus | 是否自动获得焦点 | Boolean | false | true | false |
|
|
107
|
+
| showAction | 是否显示右侧控件(右侧的"搜索"按钮) | Boolean | true | true | false |
|
|
108
|
+
| actionStyle | 右侧控件的样式,对象形式 | Object | - | - |
|
|
109
|
+
| actionText | 右侧控件文字 | String | 搜索 | - |
|
|
110
|
+
| inputAlign | 输入框内容水平对齐方式 | String | left | center | right|
|
|
111
|
+
| inputStyle | 自定义输入框样式,对象形式 | Object | - | - |
|
|
112
|
+
| disabled | 是否启用输入框 | Boolean | false | true | false |
|
|
113
|
+
| borderColor | 边框颜色,配置了颜色,才会有边框 | String | transparent | - |
|
|
114
|
+
| searchIconColor | 搜索图标的颜色,默认同输入框字体颜色 | String | #909399 | - |
|
|
115
|
+
| searchIconSize | 搜索图标的大小 | Number | 22 | - |
|
|
116
|
+
| color | 输入框字体颜色 | String | #606266 | - |
|
|
117
|
+
| placeholderColor | placeholder的颜色 | String | #909399 | - |
|
|
118
|
+
| searchIcon | 输入框左边的图标,可以为uv-ui图标名称或图片路径 | String | search | - |
|
|
119
|
+
| margin | 组件与其他上下左右元素之间的距离,带单位的字符串形式,如"30rpx"、"30rpx 20rpx"等写法 | String | 0 | - |
|
|
120
|
+
| animation | 是否开启动画,见上方说明 | Boolean | false | true | false |
|
|
121
|
+
| value | 输入框初始值 | String | - | - |
|
|
122
|
+
| maxlength | 输入框最大能输入的长度,-1为不限制长度 | String | Number | -1 | - |
|
|
123
|
+
| height | 输入框高度,单位rpx | String | Number | 64 | - |
|
|
124
|
+
| label | 搜索左侧文本信息 | String | Number | - | - |
|
|
125
|
+
| boxStyle<Badge text="1.0.6" /> | 自定义输入框部分的样式 | Object | - | - |
|
|
126
|
+
| customStyle | 自定义外部样式 | Object | - | - |
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
### Search Events
|
|
130
|
+
|
|
131
|
+
您可以通过监听`change`事件,在回调中将返回的结果绑定一个变量去获得用户的输入内容。
|
|
132
|
+
但如"基本使用"中的说明一样,您双向绑定了一个变量后,无需监听`change`事件也是可以的。
|
|
133
|
+
|
|
134
|
+
| 事件名| 说明 | 回调参数 |
|
|
135
|
+
| :- | :- | :- |
|
|
136
|
+
| @change| 输入框内容发生变化时触发 | value:输入框的值 |
|
|
137
|
+
| @search| 用户确定搜索时触发,用户按回车键,或者手机键盘右下角的"搜索"键时触发 | value:输入框的值 |
|
|
138
|
+
| @custom| 用户点击右侧控件时触发 | value:输入框的值 |
|
|
139
|
+
| @blur | 输入框失去焦点时触发 | value:输入框的值 |
|
|
140
|
+
| @focus | 输入框获得焦点时触发 | value:输入框的值 |
|
|
141
|
+
| @clear | 配置了`clearabled`后,清空内容时会发出此事件 | - |
|
|
142
|
+
| @click | `disabled`为`true`时,点击输入框,发出此事件,用于跳转搜索页 | - |
|
|
143
|
+
| @clickIcon | 左侧icon点击时候时触发 | - |
|
|
144
|
+
|
|
145
|
+
### Search Slots
|
|
146
|
+
|
|
147
|
+
|名称 | 说明 |
|
|
148
|
+
|:- |:- |
|
|
149
|
+
| prefix<Badge text="1.0.6" /> | 前置插槽,可替换输入框前面的图标等场景 |
|
|
150
|
+
| suffix<Badge text="1.0.6" /> | 后置插槽,可在输入框后面增加按钮等场景 |
|
|
151
|
+
|
|
152
|
+
<style scoped>
|
|
153
|
+
h3[id=search-events] + p + table thead tr th:nth-child(2){
|
|
154
|
+
width: 40%;
|
|
155
|
+
}
|
|
156
|
+
h3[id=search-slots] + table thead tr th:nth-child(2)
|
|
157
|
+
{
|
|
158
|
+
width: 80%;
|
|
159
|
+
}
|
|
160
|
+
</style>
|