docs(Badge): add content slot demo (#7647)

* docs(Badge): add content slot demo

* docs: fix content
This commit is contained in:
neverland 2020-11-26 23:04:13 +08:00 committed by GitHub
parent 1855cffeb2
commit 38c4f506e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 188 additions and 17 deletions

View File

@ -14,7 +14,13 @@ Vue.use(Badge);
### Basic Usage ### Basic Usage
```html ```html
<van-badge content="5"> <van-badge :content="5">
<div class="child" />
</van-badge>
<van-badge :content="10">
<div class="child" />
</van-badge>
<van-badge content="Hot">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge dot> <van-badge dot>
@ -23,8 +29,8 @@ Vue.use(Badge);
<style> <style>
.child { .child {
width: 36px; width: 40px;
height: 36px; height: 40px;
background: #f2f3f5; background: #f2f3f5;
border-radius: 4px; border-radius: 4px;
} }
@ -34,10 +40,13 @@ Vue.use(Badge);
### Max ### Max
```html ```html
<van-badge content="20" max="9"> <van-badge :content="20" max="9">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge content="200" max="99"> <van-badge :content="50" max="20">
<div class="child" />
</van-badge>
<van-badge :content="200" max="99">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
``` ```
@ -45,7 +54,10 @@ Vue.use(Badge);
### Custom Color ### Custom Color
```html ```html
<van-badge content="5" color="#1989fa"> <van-badge :content="5" color="#1989fa">
<div class="child" />
</van-badge>
<van-badge :content="10" color="#1989fa">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge dot color="#1989fa"> <van-badge dot color="#1989fa">
@ -53,10 +65,45 @@ Vue.use(Badge);
</van-badge> </van-badge>
``` ```
### Standaline ### Custom Content
Use `content` slot to custom :content of badge.
```html ```html
<van-badge content="200" max="99" /> <van-badge>
<div class="child" />
<template #content>
<van-icon name="success" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="cross" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="down" class="badge-icon" />
</template>
</van-badge>
```
```css
.badge-icon {
display: block;
font-size: 10px;
line-height: 16px;
}
```
### Standalone
```html
<van-badge :content="20" />
<van-badge :content="200" max="99" />
``` ```
## API ## API
@ -73,8 +120,9 @@ Vue.use(Badge);
### Slots ### Slots
| Name | Description | | Name | Description |
| ------- | ------------ | | ------- | -------------------- |
| default | Default slot | | default | Default slot |
| content | Custom badge content |
### Less Variables ### Less Variables

View File

@ -23,14 +23,20 @@ Vue.use(Badge);
<van-badge :content="5"> <van-badge :content="5">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge :content="10">
<div class="child" />
</van-badge>
<van-badge content="Hot">
<div class="child" />
</van-badge>
<van-badge dot> <van-badge dot>
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<style> <style>
.child { .child {
width: 36px; width: 40px;
height: 36px; height: 40px;
background: #f2f3f5; background: #f2f3f5;
border-radius: 4px; border-radius: 4px;
} }
@ -45,6 +51,9 @@ Vue.use(Badge);
<van-badge :content="20" max="9"> <van-badge :content="20" max="9">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge :content="50" max="20">
<div class="child" />
</van-badge>
<van-badge :content="200" max="99"> <van-badge :content="200" max="99">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
@ -58,16 +67,54 @@ Vue.use(Badge);
<van-badge :content="5" color="#1989fa"> <van-badge :content="5" color="#1989fa">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge :content="10" color="#1989fa">
<div class="child" />
</van-badge>
<van-badge dot color="#1989fa"> <van-badge dot color="#1989fa">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
``` ```
### 自定义徽标内容
通过 `content` 插槽可以自定义徽标的内容,比如插入一个图标。
```html
<van-badge>
<div class="child" />
<template #content>
<van-icon name="success" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="cross" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="down" class="badge-icon" />
</template>
</van-badge>
```
```css
.badge-icon {
display: block;
font-size: 10px;
line-height: 16px;
}
```
### 独立展示 ### 独立展示
当 Badge 没有子元素时,会作为一个独立的元素进行展示。 当 Badge 没有子元素时,会作为一个独立的元素进行展示。
```html ```html
<van-badge :content="20" />
<van-badge :content="200" max="99" /> <van-badge :content="200" max="99" />
``` ```

View File

@ -4,6 +4,12 @@
<van-badge content="5"> <van-badge content="5">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge content="10">
<div class="child" />
</van-badge>
<van-badge content="Hot">
<div class="child" />
</van-badge>
<van-badge dot> <van-badge dot>
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
@ -13,6 +19,9 @@
<van-badge content="20" max="9"> <van-badge content="20" max="9">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge content="50" max="20">
<div class="child" />
</van-badge>
<van-badge content="200" max="99"> <van-badge content="200" max="99">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
@ -22,13 +31,38 @@
<van-badge content="5" :color="BLUE"> <van-badge content="5" :color="BLUE">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
<van-badge content="10" :color="BLUE">
<div class="child" />
</van-badge>
<van-badge dot :color="BLUE"> <van-badge dot :color="BLUE">
<div class="child" /> <div class="child" />
</van-badge> </van-badge>
</demo-block> </demo-block>
<demo-block :title="t('customContent')">
<van-badge>
<div class="child" />
<template #content>
<van-icon name="success" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="cross" class="badge-icon" />
</template>
</van-badge>
<van-badge>
<div class="child" />
<template #content>
<van-icon name="down" class="badge-icon" />
</template>
</van-badge>
</demo-block>
<demo-block :title="t('standalone')"> <demo-block :title="t('standalone')">
<van-badge content="200" max="99" style="margin-left: 16px;" /> <van-badge content="20" style="margin-left: 16px;" />
<van-badge content="200" max="99" style="margin-left: 12px;" />
</demo-block> </demo-block>
</demo-section> </demo-section>
</template> </template>
@ -42,11 +76,13 @@ export default {
max: '最大值', max: '最大值',
standalone: '独立展示', standalone: '独立展示',
customColor: '自定义颜色', customColor: '自定义颜色',
customContent: '自定义徽标内容',
}, },
'en-US': { 'en-US': {
max: 'Max', max: 'Max',
standalone: 'Standalone', standalone: 'Standalone',
customColor: 'Custom Color', customColor: 'Custom Color',
customContent: 'Custom Content',
}, },
}, },
@ -69,10 +105,16 @@ export default {
} }
.child { .child {
width: 36px; width: 40px;
height: 36px; height: 40px;
background: @gray-2; background: @gray-2;
border-radius: 4px; border-radius: 4px;
} }
.badge-icon {
display: block;
font-size: 10px;
line-height: 16px;
}
} }
</style> </style>

View File

@ -7,6 +7,14 @@ exports[`renders demo correctly 1`] = `
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--fixed">5</div> <div class="van-badge van-badge--fixed">5</div>
</div> </div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed">10</div>
</div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed">Hot</div>
</div>
<div class="van-badge__wrapper"> <div class="van-badge__wrapper">
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--dot van-badge--fixed"></div> <div class="van-badge van-badge--dot van-badge--fixed"></div>
@ -17,6 +25,10 @@ exports[`renders demo correctly 1`] = `
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--fixed">9+</div> <div class="van-badge van-badge--fixed">9+</div>
</div> </div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed">20+</div>
</div>
<div class="van-badge__wrapper"> <div class="van-badge__wrapper">
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--fixed">99+</div> <div class="van-badge van-badge--fixed">99+</div>
@ -27,13 +39,35 @@ exports[`renders demo correctly 1`] = `
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--fixed" style="background: rgb(25, 137, 250);">5</div> <div class="van-badge van-badge--fixed" style="background: rgb(25, 137, 250);">5</div>
</div> </div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed" style="background: rgb(25, 137, 250);">10</div>
</div>
<div class="van-badge__wrapper"> <div class="van-badge__wrapper">
<div class="child"></div> <div class="child"></div>
<div class="van-badge van-badge--dot van-badge--fixed" style="background: rgb(25, 137, 250);"></div> <div class="van-badge van-badge--dot van-badge--fixed" style="background: rgb(25, 137, 250);"></div>
</div> </div>
</div> </div>
<div> <div>
<div class="van-badge" style="margin-left: 16px;">99+</div> <div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed"><i class="badge-icon van-icon van-icon-success">
<!----></i></div>
</div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed"><i class="badge-icon van-icon van-icon-cross">
<!----></i></div>
</div>
<div class="van-badge__wrapper">
<div class="child"></div>
<div class="van-badge van-badge--fixed"><i class="badge-icon van-icon van-icon-down">
<!----></i></div>
</div>
</div>
<div>
<div class="van-badge" style="margin-left: 16px;">20</div>
<div class="van-badge" style="margin-left: 12px;">99+</div>
</div> </div>
</div> </div>
`; `;