cbvirtua 1.0.26 → 1.0.28
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/after/after.d.ts +3 -0
- package/after/after.index.d.ts +3 -0
- package/after/after.index.js +3 -0
- package/after/after.index.js.map +1 -0
- package/after/after.js +11 -0
- package/after/after.js.map +1 -0
- package/after/after.model.d.ts +9 -0
- package/after/after.model.js +2 -0
- package/after/after.model.js.map +1 -0
- package/after/after.spec.d.ts +1 -0
- package/after/after.spec.js +226 -0
- package/after/after.spec.js.map +1 -0
- package/after/afterify.d.ts +3 -0
- package/after/afterify.js +26 -0
- package/after/afterify.js.map +1 -0
- package/before/before.d.ts +3 -0
- package/before/before.index.d.ts +3 -0
- package/before/before.index.js +3 -0
- package/before/before.index.js.map +1 -0
- package/before/before.js +11 -0
- package/before/before.js.map +1 -0
- package/before/before.model.d.ts +4 -0
- package/before/before.model.js +2 -0
- package/before/before.model.js.map +1 -0
- package/before/before.spec.d.ts +1 -0
- package/before/before.spec.js +174 -0
- package/before/before.spec.js.map +1 -0
- package/before/beforify.d.ts +3 -0
- package/before/beforify.js +18 -0
- package/before/beforify.js.map +1 -0
- package/package.json +1 -1
- package/Autocomplete.vue.txt +0 -603
- package/md.txt +0 -24
- package/py/cn.js +0 -28
- package/py/decode.js +0 -33
- package/py/dict-cn.json +0 -1
- package/py/dict-tw.json +0 -1
- package/py/engine.js +0 -117
- package/py/tw.js +0 -28
- package/style/basic.less +0 -69
- package/style/index.less +0 -125
- package/style/index.tsx +0 -2
- package/style/mixin.less +0 -53
- package/style/rtl.less +0 -68
- package/vant/style/README.md +0 -79
- package/vant/style/README.zh-CN.md +0 -79
- package/vant/style/animation.less +0 -139
- package/vant/style/base.less +0 -10
- package/vant/style/clearfix.less +0 -5
- package/vant/style/demo/index.vue +0 -110
- package/vant/style/ellipsis.less +0 -13
- package/vant/style/hairline.less +0 -47
- package/vant/style/mixins/clearfix.less +0 -7
- package/vant/style/mixins/ellipsis.less +0 -15
- package/vant/style/mixins/hairline.less +0 -39
- package/vant/style/normalize.less +0 -38
- package/vant/style/reset.less +0 -171
- package/vant/style/var.less +0 -901
- package/vant/tab/README.md +0 -307
- package/vant/tab/README.zh-CN.md +0 -342
- package/vant/tab/demo/index.vue +0 -193
- package/vant/tab/index.js +0 -95
- package/vant/tab/index.less +0 -17
- package/vant/tab/test/__snapshots__/demo.spec.js.snap +0 -349
- package/vant/tab/test/__snapshots__/index.spec.js.snap +0 -352
- package/vant/tab/test/__snapshots__/insert.spec.js.snap +0 -63
- package/vant/tab/test/demo.spec.js +0 -4
- package/vant/tab/test/index.spec.js +0 -435
- package/vant/tab/test/insert.spec.js +0 -75
- package/vant/tabs/Content.js +0 -79
- package/vant/tabs/Title.js +0 -91
- package/vant/tabs/index.js +0 -453
- package/vant/tabs/index.less +0 -153
- package/vant/tabs/utils.ts +0 -53
- package/vant/utils/constant.ts +0 -11
- package/vant/utils/create/bem.ts +0 -45
- package/vant/utils/create/component.ts +0 -86
- package/vant/utils/create/i18n.ts +0 -16
- package/vant/utils/create/index.ts +0 -14
- package/vant/utils/deep-assign.ts +0 -27
- package/vant/utils/deep-clone.ts +0 -23
- package/vant/utils/dom/event.ts +0 -56
- package/vant/utils/dom/node.ts +0 -7
- package/vant/utils/dom/raf.ts +0 -40
- package/vant/utils/dom/reset-scroll.ts +0 -16
- package/vant/utils/dom/scroll.ts +0 -81
- package/vant/utils/dom/style.ts +0 -11
- package/vant/utils/format/number.ts +0 -52
- package/vant/utils/format/string.ts +0 -15
- package/vant/utils/format/unit.ts +0 -61
- package/vant/utils/functional.ts +0 -73
- package/vant/utils/index.ts +0 -79
- package/vant/utils/interceptor.ts +0 -27
- package/vant/utils/router.ts +0 -54
- package/vant/utils/test/bem.spec.js +0 -39
- package/vant/utils/test/index.spec.js +0 -152
- package/vant/utils/test/interceptor.spec.js +0 -50
- package/vant/utils/types.ts +0 -40
- package/vant/utils/validate/date.ts +0 -8
- package/vant/utils/validate/email.ts +0 -5
- package/vant/utils/validate/mobile.ts +0 -6
- package/vant/utils/validate/number.ts +0 -12
- package/vant/utils/validate/system.ts +0 -13
- package/vant/utils/vnodes.ts +0 -33
- package//346/226/260/345/273/272 /346/226/207/346/234/254/346/226/207/346/241/243.txt" +0 -85
package/vant/tab/README.md
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
# Tab
|
|
2
|
-
|
|
3
|
-
### Install
|
|
4
|
-
|
|
5
|
-
```js
|
|
6
|
-
import Vue from 'vue';
|
|
7
|
-
import { Tab, Tabs } from 'vant';
|
|
8
|
-
|
|
9
|
-
Vue.use(Tab);
|
|
10
|
-
Vue.use(Tabs);
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
### Basic Usage
|
|
16
|
-
|
|
17
|
-
The first tab is actived by default, you can set `v-model` to active specified tab.
|
|
18
|
-
|
|
19
|
-
```html
|
|
20
|
-
<van-tabs v-model="active">
|
|
21
|
-
<van-tab v-for="index in 4" :title="'tab' + index">
|
|
22
|
-
content of tab {{ index }}
|
|
23
|
-
</van-tab>
|
|
24
|
-
</van-tabs>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
```js
|
|
28
|
-
export default {
|
|
29
|
-
data() {
|
|
30
|
-
return {
|
|
31
|
-
active: 2,
|
|
32
|
-
};
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Match By Name
|
|
38
|
-
|
|
39
|
-
```html
|
|
40
|
-
<van-tabs v-model="activeName">
|
|
41
|
-
<van-tab title="tab 1" name="a">content of tab 1</van-tab>
|
|
42
|
-
<van-tab title="tab 2" name="b">content of tab 2</van-tab>
|
|
43
|
-
<van-tab title="tab 3" name="c">content of tab 3</van-tab>
|
|
44
|
-
</van-tabs>
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
```js
|
|
48
|
-
export default {
|
|
49
|
-
data() {
|
|
50
|
-
return {
|
|
51
|
-
activeName: 'a',
|
|
52
|
-
};
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Swipe Tabs
|
|
58
|
-
|
|
59
|
-
By default more than 5 tabs, you can scroll through the tabs. You can set `swipe-threshold` attribute to customize threshold number.
|
|
60
|
-
|
|
61
|
-
```html
|
|
62
|
-
<van-tabs>
|
|
63
|
-
<van-tab v-for="index in 8" :title="'tab' + index">
|
|
64
|
-
content of tab {{ index }}
|
|
65
|
-
</van-tab>
|
|
66
|
-
</van-tabs>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Disabled Tab
|
|
70
|
-
|
|
71
|
-
You can set `disabled` attribute on the corresponding `van-tab`.
|
|
72
|
-
|
|
73
|
-
```html
|
|
74
|
-
<van-tabs @disabled="onClickDisabled">
|
|
75
|
-
<van-tab v-for="index in 3" :title="'tab' + index" :disabled="index === 2">
|
|
76
|
-
content of tab {{ index }}
|
|
77
|
-
</van-tab>
|
|
78
|
-
</van-tabs>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
```js
|
|
82
|
-
import { Toast } from 'vant';
|
|
83
|
-
|
|
84
|
-
export default {
|
|
85
|
-
methods: {
|
|
86
|
-
onClickDisabled(name, title) {
|
|
87
|
-
Toast(title + ' is disabled');
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Card Style
|
|
94
|
-
|
|
95
|
-
Tabs styled as cards.
|
|
96
|
-
|
|
97
|
-
```html
|
|
98
|
-
<van-tabs type="card">
|
|
99
|
-
<van-tab v-for="index in 3" :title="'tab' + index">
|
|
100
|
-
content of tab {{ index }}
|
|
101
|
-
</van-tab>
|
|
102
|
-
</van-tabs>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Click Event
|
|
106
|
-
|
|
107
|
-
```html
|
|
108
|
-
<van-tabs @click="onClick">
|
|
109
|
-
<van-tab v-for="index in 2" :title="'tab' + index">
|
|
110
|
-
content of tab {{ index }}
|
|
111
|
-
</van-tab>
|
|
112
|
-
</van-tabs>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
```js
|
|
116
|
-
import { Toast } from 'vant';
|
|
117
|
-
|
|
118
|
-
export default {
|
|
119
|
-
methods: {
|
|
120
|
-
onClick(name, title) {
|
|
121
|
-
Toast(title);
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Sticky
|
|
128
|
-
|
|
129
|
-
In sticky mode, the tab will be fixed to top when scroll to top.
|
|
130
|
-
|
|
131
|
-
```html
|
|
132
|
-
<van-tabs v-model="active" sticky>
|
|
133
|
-
<van-tab v-for="index in 4" :title="'tab ' + index">
|
|
134
|
-
content {{ index }}
|
|
135
|
-
</van-tab>
|
|
136
|
-
</van-tabs>
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Custom title
|
|
140
|
-
|
|
141
|
-
Use title slot to custom tab title.
|
|
142
|
-
|
|
143
|
-
```html
|
|
144
|
-
<van-tabs v-model="active">
|
|
145
|
-
<van-tab v-for="index in 2" :key="index">
|
|
146
|
-
<template #title> <van-icon name="more-o" />tab </template>
|
|
147
|
-
content {{ index }}
|
|
148
|
-
</van-tab>
|
|
149
|
-
</van-tabs>
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Switch Animation
|
|
153
|
-
|
|
154
|
-
Use `animated` props to change tabs with animation.
|
|
155
|
-
|
|
156
|
-
```html
|
|
157
|
-
<van-tabs v-model="active" animated>
|
|
158
|
-
<van-tab v-for="index in 4" :title="'tab ' + index">
|
|
159
|
-
content {{ index }}
|
|
160
|
-
</van-tab>
|
|
161
|
-
</van-tabs>
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Swipeable
|
|
165
|
-
|
|
166
|
-
In swipeable mode, you can switch tabs with swipe gesture in the content.
|
|
167
|
-
|
|
168
|
-
```html
|
|
169
|
-
<van-tabs v-model="active" swipeable>
|
|
170
|
-
<van-tab v-for="index in 4" :title="'tab ' + index">
|
|
171
|
-
content {{ index }}
|
|
172
|
-
</van-tab>
|
|
173
|
-
</van-tabs>
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Scrollspy
|
|
177
|
-
|
|
178
|
-
In scrollspy mode, the list of content will be tiled.
|
|
179
|
-
|
|
180
|
-
```html
|
|
181
|
-
<van-tabs v-model="active" scrollspy sticky>
|
|
182
|
-
<van-tab v-for="index in 8" :title="'tab ' + index">
|
|
183
|
-
content {{ index }}
|
|
184
|
-
</van-tab>
|
|
185
|
-
</van-tabs>
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Before Change
|
|
189
|
-
|
|
190
|
-
```html
|
|
191
|
-
<van-tabs :before-change="beforeChange">
|
|
192
|
-
<van-tab v-for="index in 4" :title="'tab ' + index">
|
|
193
|
-
content {{ index }}
|
|
194
|
-
</van-tab>
|
|
195
|
-
</van-tabs>
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
```js
|
|
199
|
-
export default {
|
|
200
|
-
methods: {
|
|
201
|
-
beforeChange(index) {
|
|
202
|
-
// prevent change
|
|
203
|
-
if (index === 1) {
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// async
|
|
208
|
-
return new Promise((resolve) => {
|
|
209
|
-
resolve(index !== 3);
|
|
210
|
-
});
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
## API
|
|
217
|
-
|
|
218
|
-
### Tabs Props
|
|
219
|
-
|
|
220
|
-
| Attribute | Description | Type | Default |
|
|
221
|
-
| --- | --- | --- | --- |
|
|
222
|
-
| v-model | Index of active tab | _number \| string_ | `0` |
|
|
223
|
-
| type | Can be set to `line` `card` | _string_ | `line` |
|
|
224
|
-
| color | Tab color | _string_ | `#ee0a24` |
|
|
225
|
-
| background | Background color | _string_ | `white` |
|
|
226
|
-
| duration | Toggle tab's animation time | _number \| string_ | `0.3` | - |
|
|
227
|
-
| line-width | Width of tab line | _number \| string_ | `40px` |
|
|
228
|
-
| line-height | Height of tab line | _number \| string_ | `3px` |
|
|
229
|
-
| animated | Whether to change tabs with animation | _boolean_ | `false` |
|
|
230
|
-
| border | Whether to show border when `type="line"` | _boolean_ | `false` |
|
|
231
|
-
| ellipsis | Whether to ellipsis too long title | _boolean_ | `true` |
|
|
232
|
-
| sticky | Whether to use sticky mode | _boolean_ | `false` |
|
|
233
|
-
| swipeable | Whether to switch tabs with swipe gesture in the content | _boolean_ | `false` |
|
|
234
|
-
| lazy-render | Whether to enable tab content lazy render | _boolean_ | `true` |
|
|
235
|
-
| scrollspy | Whether to use scrollspy mode | _boolean_ | `false` |
|
|
236
|
-
| offset-top `v2.8.7` | Sticky offset top , supports `px` `vw` `vh` `rem` unit, default `px` | _number \| string_ | `0` |
|
|
237
|
-
| swipe-threshold | Set swipe tabs threshold | _number \| string_ | `5` | - |
|
|
238
|
-
| title-active-color | Title active color | _string_ | - |
|
|
239
|
-
| title-inactive-color | Title inactive color | _string_ | - |
|
|
240
|
-
| before-change `v2.9.3` | Callback function before changing tabs,return `false` to prevent change,support return Promise | _(name) => boolean \| Promise_ | - |
|
|
241
|
-
|
|
242
|
-
### Tab Props
|
|
243
|
-
|
|
244
|
-
| Attribute | Description | Type | Default |
|
|
245
|
-
| --- | --- | --- | --- |
|
|
246
|
-
| title | Title | _string_ | - |
|
|
247
|
-
| disabled | Whether to disable tab | _boolean_ | `false` |
|
|
248
|
-
| dot | Whether to show red dot on the title | _boolean_ | `false` |
|
|
249
|
-
| badge `v2.5.6` | Content of the badge on the title | _number \| string_ | - |
|
|
250
|
-
| name | Identifier | _number \| string_ | Index of tab |
|
|
251
|
-
| url | Link | _string_ | - |
|
|
252
|
-
| to | Target route of the link, same as to of vue-router | _string \| object_ | - |
|
|
253
|
-
| replace | If true, the navigation will not leave a history record | _boolean_ | `false` |
|
|
254
|
-
| title-style | Custom title style | _any_ | - |
|
|
255
|
-
| title-class | Custom title class name | _any_ | - |
|
|
256
|
-
|
|
257
|
-
### Tabs Events
|
|
258
|
-
|
|
259
|
-
| Event | Description | Arguments |
|
|
260
|
-
| --- | --- | --- |
|
|
261
|
-
| click | Emitted when a tab is clicked | name,title |
|
|
262
|
-
| change | Emitted when active tab changed | name,title |
|
|
263
|
-
| disabled | Emitted when a disabled tab is clicked | name,title |
|
|
264
|
-
| rendered | Emitted when content first rendered in lazy-render mode | name,title |
|
|
265
|
-
| scroll | Emitted when tab scrolling in sticky mode | object: { scrollTop, isFixed } |
|
|
266
|
-
|
|
267
|
-
### Tabs Methods
|
|
268
|
-
|
|
269
|
-
Use [ref](https://vuejs.org/v2/api/#ref) to get Tabs instance and call instance methods.
|
|
270
|
-
|
|
271
|
-
| Name | Description | Attribute | Return value |
|
|
272
|
-
| --- | --- | --- | --- |
|
|
273
|
-
| resize | Resize Tabs when container element resized or visibility changed | - | - |
|
|
274
|
-
| scrollTo `v2.9.3` | Go to specified tab in scrollspy mode | name | - |
|
|
275
|
-
|
|
276
|
-
### Tabs Slots
|
|
277
|
-
|
|
278
|
-
| Name | Description |
|
|
279
|
-
| --------- | ------------------------ |
|
|
280
|
-
| nav-left | Custom nav left content |
|
|
281
|
-
| nav-right | Custom nav right content |
|
|
282
|
-
|
|
283
|
-
### Tab Slots
|
|
284
|
-
|
|
285
|
-
| Name | Description |
|
|
286
|
-
| ------- | ---------------- |
|
|
287
|
-
| default | Content of tab |
|
|
288
|
-
| title | Custom tab title |
|
|
289
|
-
|
|
290
|
-
### Less Variables
|
|
291
|
-
|
|
292
|
-
How to use: [Custom Theme](#/en-US/theme).
|
|
293
|
-
|
|
294
|
-
| Name | Default Value | Description |
|
|
295
|
-
| -------------------------- | --------------------- | ----------- |
|
|
296
|
-
| @tab-text-color | `@gray-7` | - |
|
|
297
|
-
| @tab-active-text-color | `@text-color` | - |
|
|
298
|
-
| @tab-disabled-text-color | `@gray-5` | - |
|
|
299
|
-
| @tab-font-size | `@font-size-md` | - |
|
|
300
|
-
| @tab-line-height | `@line-height-md` | - |
|
|
301
|
-
| @tabs-default-color | `@red` | - |
|
|
302
|
-
| @tabs-line-height | `44px` | - |
|
|
303
|
-
| @tabs-card-height | `30px` | - |
|
|
304
|
-
| @tabs-nav-background-color | `@white` | - |
|
|
305
|
-
| @tabs-bottom-bar-width | `40px` | - |
|
|
306
|
-
| @tabs-bottom-bar-height | `3px` | - |
|
|
307
|
-
| @tabs-bottom-bar-color | `@tabs-default-color` | - |
|
package/vant/tab/README.zh-CN.md
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
# Tab 标签页
|
|
2
|
-
|
|
3
|
-
### 引入
|
|
4
|
-
|
|
5
|
-
```js
|
|
6
|
-
import Vue from 'vue';
|
|
7
|
-
import { Tab, Tabs } from 'vant';
|
|
8
|
-
|
|
9
|
-
Vue.use(Tab);
|
|
10
|
-
Vue.use(Tabs);
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## 代码演示
|
|
14
|
-
|
|
15
|
-
### 基础用法
|
|
16
|
-
|
|
17
|
-
通过 `v-model` 绑定当前激活标签对应的索引值,默认情况下启用第一个标签。
|
|
18
|
-
|
|
19
|
-
```html
|
|
20
|
-
<van-tabs v-model="active">
|
|
21
|
-
<van-tab title="标签 1">内容 1</van-tab>
|
|
22
|
-
<van-tab title="标签 2">内容 2</van-tab>
|
|
23
|
-
<van-tab title="标签 3">内容 3</van-tab>
|
|
24
|
-
<van-tab title="标签 4">内容 4</van-tab>
|
|
25
|
-
</van-tabs>
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
export default {
|
|
30
|
-
data() {
|
|
31
|
-
return {
|
|
32
|
-
active: 2,
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### 通过名称匹配
|
|
39
|
-
|
|
40
|
-
在标签指定 `name` 属性的情况下,`v-model` 的值为当前标签的 `name`(此时无法通过索引值来匹配标签)。
|
|
41
|
-
|
|
42
|
-
```html
|
|
43
|
-
<van-tabs v-model="activeName">
|
|
44
|
-
<van-tab title="标签 1" name="a">内容 1</van-tab>
|
|
45
|
-
<van-tab title="标签 2" name="b">内容 2</van-tab>
|
|
46
|
-
<van-tab title="标签 3" name="c">内容 3</van-tab>
|
|
47
|
-
</van-tabs>
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
```js
|
|
51
|
-
export default {
|
|
52
|
-
data() {
|
|
53
|
-
return {
|
|
54
|
-
activeName: 'a',
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 标签栏滚动
|
|
61
|
-
|
|
62
|
-
标签数量超过 5 个时,标签栏可以在水平方向上滚动,切换时会自动将当前标签居中。
|
|
63
|
-
|
|
64
|
-
```html
|
|
65
|
-
<van-tabs>
|
|
66
|
-
<van-tab v-for="index in 8" :title="'标签 ' + index">
|
|
67
|
-
内容 {{ index }}
|
|
68
|
-
</van-tab>
|
|
69
|
-
</van-tabs>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 禁用标签
|
|
73
|
-
|
|
74
|
-
设置 `disabled` 属性即可禁用标签,如果需要监听禁用标签的点击事件,可以在 `van-tabs` 上监听`disabled` 事件。
|
|
75
|
-
|
|
76
|
-
```html
|
|
77
|
-
<van-tabs @disabled="onClickDisabled">
|
|
78
|
-
<van-tab title="标签 1">内容 1</van-tab>
|
|
79
|
-
<van-tab title="标签 2" disabled>内容 2</van-tab>
|
|
80
|
-
<van-tab title="标签 3">内容 3</van-tab>
|
|
81
|
-
</van-tabs>
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
```js
|
|
85
|
-
import { Toast } from 'vant';
|
|
86
|
-
|
|
87
|
-
export default {
|
|
88
|
-
methods: {
|
|
89
|
-
onClickDisabled(name, title) {
|
|
90
|
-
Toast(name + '已被禁用');
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### 样式风格
|
|
97
|
-
|
|
98
|
-
`Tab` 支持两种样式风格:`line` 和`card`,默认为 `line` 样式,可以通过 `type` 属性切换样式风格。
|
|
99
|
-
|
|
100
|
-
```html
|
|
101
|
-
<van-tabs type="card">
|
|
102
|
-
<van-tab title="标签 1">内容 1</van-tab>
|
|
103
|
-
<van-tab title="标签 2">内容 2</van-tab>
|
|
104
|
-
<van-tab title="标签 3">内容 3</van-tab>
|
|
105
|
-
</van-tabs>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 点击事件
|
|
109
|
-
|
|
110
|
-
可以在 `van-tabs` 上绑定 `click` 事件,事件传参为标签对应的标识符和标题。
|
|
111
|
-
|
|
112
|
-
```html
|
|
113
|
-
<van-tabs @click="onClick">
|
|
114
|
-
<van-tab title="标签 1">内容 1</van-tab>
|
|
115
|
-
<van-tab title="标签 2">内容 2</van-tab>
|
|
116
|
-
</van-tabs>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
```js
|
|
120
|
-
import { Toast } from 'vant';
|
|
121
|
-
|
|
122
|
-
export default {
|
|
123
|
-
methods: {
|
|
124
|
-
onClick(name, title) {
|
|
125
|
-
Toast(title);
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 粘性布局
|
|
132
|
-
|
|
133
|
-
通过 `sticky` 属性可以开启粘性布局,粘性布局下,标签页滚动到顶部时会自动吸顶。
|
|
134
|
-
|
|
135
|
-
```html
|
|
136
|
-
<van-tabs v-model="active" sticky>
|
|
137
|
-
<van-tab v-for="index in 4" :title="'选项 ' + index">
|
|
138
|
-
内容 {{ index }}
|
|
139
|
-
</van-tab>
|
|
140
|
-
</van-tabs>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### 自定义标签
|
|
144
|
-
|
|
145
|
-
通过 `title` 插槽可以自定义标签内容。
|
|
146
|
-
|
|
147
|
-
```html
|
|
148
|
-
<van-tabs v-model="active">
|
|
149
|
-
<van-tab v-for="index in 2" :key="index">
|
|
150
|
-
<template #title> <van-icon name="more-o" />选项 </template>
|
|
151
|
-
内容 {{ index }}
|
|
152
|
-
</van-tab>
|
|
153
|
-
</van-tabs>
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### 切换动画
|
|
157
|
-
|
|
158
|
-
通过 `animated` 属性可以开启切换标签内容时的转场动画。
|
|
159
|
-
|
|
160
|
-
```html
|
|
161
|
-
<van-tabs v-model="active" animated>
|
|
162
|
-
<van-tab v-for="index in 4" :title="'选项 ' + index">
|
|
163
|
-
内容 {{ index }}
|
|
164
|
-
</van-tab>
|
|
165
|
-
</van-tabs>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### 滑动切换
|
|
169
|
-
|
|
170
|
-
通过 `swipeable` 属性可以开启滑动切换标签页。
|
|
171
|
-
|
|
172
|
-
```html
|
|
173
|
-
<van-tabs v-model="active" swipeable>
|
|
174
|
-
<van-tab v-for="index in 4" :title="'选项 ' + index">
|
|
175
|
-
内容 {{ index }}
|
|
176
|
-
</van-tab>
|
|
177
|
-
</van-tabs>
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### 滚动导航
|
|
181
|
-
|
|
182
|
-
通过 `scrollspy` 属性可以开启滚动导航模式,该模式下,内容将会平铺展示。
|
|
183
|
-
|
|
184
|
-
```html
|
|
185
|
-
<van-tabs v-model="active" scrollspy sticky>
|
|
186
|
-
<van-tab v-for="index in 8" :title="'选项 ' + index">
|
|
187
|
-
内容 {{ index }}
|
|
188
|
-
</van-tab>
|
|
189
|
-
</van-tabs>
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### 异步切换
|
|
193
|
-
|
|
194
|
-
通过 `before-change` 属性可以在切换标签前执行特定的逻辑。
|
|
195
|
-
|
|
196
|
-
```html
|
|
197
|
-
<van-tabs :before-change="beforeChange">
|
|
198
|
-
<van-tab v-for="index in 4" :title="'选项 ' + index">
|
|
199
|
-
内容 {{ index }}
|
|
200
|
-
</van-tab>
|
|
201
|
-
</van-tabs>
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
```js
|
|
205
|
-
export default {
|
|
206
|
-
methods: {
|
|
207
|
-
beforeChange(index) {
|
|
208
|
-
// 返回 false 表示阻止此次切换
|
|
209
|
-
if (index === 1) {
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// 返回 Promise 来执行异步逻辑
|
|
214
|
-
return new Promise((resolve) => {
|
|
215
|
-
// 在 resolve 函数中返回 true 或 false
|
|
216
|
-
resolve(index !== 3);
|
|
217
|
-
});
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
};
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## API
|
|
224
|
-
|
|
225
|
-
### Tabs Props
|
|
226
|
-
|
|
227
|
-
| 参数 | 说明 | 类型 | 默认值 |
|
|
228
|
-
| --- | --- | --- | --- |
|
|
229
|
-
| v-model | 绑定当前选中标签的标识符 | _number \| string_ | `0` |
|
|
230
|
-
| type | 样式风格类型,可选值为 `card` | _string_ | `line` |
|
|
231
|
-
| color | 标签主题色 | _string_ | `#ee0a24` |
|
|
232
|
-
| background | 标签栏背景色 | _string_ | `white` |
|
|
233
|
-
| duration | 动画时间,单位秒 | _number \| string_ | `0.3` |
|
|
234
|
-
| line-width | 底部条宽度,默认单位 `px` | _number \| string_ | `40px` |
|
|
235
|
-
| line-height | 底部条高度,默认单位 `px` | _number \| string_ | `3px` |
|
|
236
|
-
| animated | 是否开启切换标签内容时的转场动画 | _boolean_ | `false` |
|
|
237
|
-
| border | 是否显示标签栏外边框,仅在 `type="line"` 时有效 | _boolean_ | `false` |
|
|
238
|
-
| ellipsis | 是否省略过长的标题文字 | _boolean_ | `true` |
|
|
239
|
-
| sticky | 是否使用粘性定位布局 | _boolean_ | `false` |
|
|
240
|
-
| swipeable | 是否开启手势滑动切换 | _boolean_ | `false` |
|
|
241
|
-
| lazy-render | 是否开启延迟渲染(首次切换到标签时才触发内容渲染) | _boolean_ | `true` |
|
|
242
|
-
| scrollspy | 是否开启滚动导航 | _boolean_ | `false` |
|
|
243
|
-
| offset-top `v2.8.7` | 粘性定位布局下与顶部的最小距离,支持 `px` `vw` `vh` `rem` 单位,默认 `px` | _number \| string_ | `0` |
|
|
244
|
-
| swipe-threshold | 滚动阈值,标签数量超过阈值且总宽度超过标签栏宽度时开始横向滚动 | _number \| string_ | `5` |
|
|
245
|
-
| title-active-color | 标题选中态颜色 | _string_ | - |
|
|
246
|
-
| title-inactive-color | 标题默认态颜色 | _string_ | - |
|
|
247
|
-
| before-change `v2.9.3` | 切换标签前的回调函数,返回 `false` 可阻止切换,支持返回 Promise | _(name) => boolean \| Promise_ | - |
|
|
248
|
-
|
|
249
|
-
### Tab Props
|
|
250
|
-
|
|
251
|
-
| 参数 | 说明 | 类型 | 默认值 |
|
|
252
|
-
| --- | --- | --- | --- |
|
|
253
|
-
| title | 标题 | _string_ | - |
|
|
254
|
-
| disabled | 是否禁用标签 | _boolean_ | `false` |
|
|
255
|
-
| dot | 是否在标题右上角显示小红点 | _boolean_ | `false` |
|
|
256
|
-
| badge `v2.5.6` | 图标右上角徽标的内容 | _number \| string_ | - |
|
|
257
|
-
| info | 图标右上角徽标的内容(已废弃,请使用 badge 属性) | _number \| string_ | - |
|
|
258
|
-
| name | 标签名称,作为匹配的标识符 | _number \| string_ | 标签的索引值 |
|
|
259
|
-
| url | 点击后跳转的链接地址 | _string_ | - |
|
|
260
|
-
| to | 点击后跳转的目标路由对象,同 vue-router 的 [to 属性](https://router.vuejs.org/zh/api/#to) | _string \| object_ | - |
|
|
261
|
-
| replace | 是否在跳转时替换当前页面历史 | _boolean_ | `false` |
|
|
262
|
-
| title-style | 自定义标题样式 | _any_ | - |
|
|
263
|
-
| title-class | 自定义标题类名 | _any_ | - |
|
|
264
|
-
|
|
265
|
-
### Tabs Events
|
|
266
|
-
|
|
267
|
-
| 事件名 | 说明 | 回调参数 |
|
|
268
|
-
| --- | --- | --- |
|
|
269
|
-
| click | 点击标签时触发 | name:标识符,title:标题 |
|
|
270
|
-
| change | 当前激活的标签改变时触发 | name:标识符,title:标题 |
|
|
271
|
-
| disabled | 点击被禁用的标签时触发 | name:标识符,title:标题 |
|
|
272
|
-
| rendered | 标签内容首次渲染时触发(仅在开启延迟渲染后触发) | name:标识符,title:标题 |
|
|
273
|
-
| scroll | 滚动时触发,仅在 sticky 模式下生效 | { scrollTop: 距离顶部位置, isFixed: 是否吸顶 } |
|
|
274
|
-
|
|
275
|
-
### Tabs 方法
|
|
276
|
-
|
|
277
|
-
通过 ref 可以获取到 Tabs 实例并调用实例方法,详见[组件实例方法](#/zh-CN/advanced-usage#zu-jian-shi-li-fang-fa)。
|
|
278
|
-
|
|
279
|
-
| 方法名 | 说明 | 参数 | 返回值 |
|
|
280
|
-
| --- | --- | --- | --- |
|
|
281
|
-
| resize | 外层元素大小或组件显示状态变化时,可以调用此方法来触发重绘 | - | - |
|
|
282
|
-
| scrollTo `v2.9.3` | 滚动到指定的标签页,在滚动导航模式下可用 | name: 标识符 | - |
|
|
283
|
-
|
|
284
|
-
### Tabs Slots
|
|
285
|
-
|
|
286
|
-
| 名称 | 说明 |
|
|
287
|
-
| --------- | ------------ |
|
|
288
|
-
| nav-left | 标题左侧内容 |
|
|
289
|
-
| nav-right | 标题右侧内容 |
|
|
290
|
-
|
|
291
|
-
### Tab Slots
|
|
292
|
-
|
|
293
|
-
| 名称 | 说明 |
|
|
294
|
-
| ------- | ---------- |
|
|
295
|
-
| default | 标签页内容 |
|
|
296
|
-
| title | 自定义标题 |
|
|
297
|
-
|
|
298
|
-
### 样式变量
|
|
299
|
-
|
|
300
|
-
组件提供了下列 Less 变量,可用于自定义样式,使用方法请参考[主题定制](#/zh-CN/theme)。
|
|
301
|
-
|
|
302
|
-
| 名称 | 默认值 | 描述 |
|
|
303
|
-
| -------------------------- | --------------------- | ---- |
|
|
304
|
-
| @tab-text-color | `@gray-7` | - |
|
|
305
|
-
| @tab-active-text-color | `@text-color` | - |
|
|
306
|
-
| @tab-disabled-text-color | `@gray-5` | - |
|
|
307
|
-
| @tab-font-size | `@font-size-md` | - |
|
|
308
|
-
| @tab-line-height | `@line-height-md` | - |
|
|
309
|
-
| @tabs-default-color | `@red` | - |
|
|
310
|
-
| @tabs-line-height | `44px` | - |
|
|
311
|
-
| @tabs-card-height | `30px` | - |
|
|
312
|
-
| @tabs-nav-background-color | `@white` | - |
|
|
313
|
-
| @tabs-bottom-bar-width | `40px` | - |
|
|
314
|
-
| @tabs-bottom-bar-height | `3px` | - |
|
|
315
|
-
| @tabs-bottom-bar-color | `@tabs-default-color` | - |
|
|
316
|
-
|
|
317
|
-
## 常见问题
|
|
318
|
-
|
|
319
|
-
### 组件从隐藏状态切换到显示状态时,底部条位置错误?
|
|
320
|
-
|
|
321
|
-
Tabs 组件在挂载时,会获取自身的宽度,并计算出底部条的位置。如果组件一开始处于隐藏状态,则获取到的宽度永远为 0,因此无法展示底部条位置。
|
|
322
|
-
|
|
323
|
-
#### 解决方法
|
|
324
|
-
|
|
325
|
-
方法一,如果是使用 `v-show` 来控制组件展示的,则替换为 `v-if` 即可解决此问题:
|
|
326
|
-
|
|
327
|
-
```html
|
|
328
|
-
<!-- Before -->
|
|
329
|
-
<van-tabs v-show="show" />
|
|
330
|
-
<!-- After -->
|
|
331
|
-
<van-tabs v-if="show" />
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
方法二,调用组件的 resize 方法来主动触发重绘:
|
|
335
|
-
|
|
336
|
-
```html
|
|
337
|
-
<van-tabs v-show="show" ref="tabs" />
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
```js
|
|
341
|
-
this.$refs.tabs.resize();
|
|
342
|
-
```
|