diff --git a/docs/src/Preview.vue b/docs/src/Preview.vue
index ca042309..88274492 100644
--- a/docs/src/Preview.vue
+++ b/docs/src/Preview.vue
@@ -41,7 +41,7 @@ const MAP = {
'switch-cell': 'switch-cell-201808221124.png',
'submit-bar': 'submit-bar-a-201809271357.png',
tab: 'tab-20181015.png',
- tag: 'tag-201808092138.png',
+ tag: 'tag-20181019.jpeg',
tabbar: 'tabbar-201808160922.png',
toast: 'toast-201808191046.png',
transition: 'transition-20180821.png',
diff --git a/example/pages/tag/index.wxml b/example/pages/tag/index.wxml
index a02a59a5..088da5e1 100644
--- a/example/pages/tag/index.wxml
+++ b/example/pages/tag/index.wxml
@@ -1,20 +1,40 @@
- 标签
- 标签
- 标签
+ 标签
+ 标签
+ 标签
标签
- 标签
- 标签
- 标签
+ 标签
+ 标签
+ 标签
标签
- 标签
- 标签
- 标签
+ 标签
+ 标签
+ 标签
+ 标签
+
+
+
+ 标签
+ 标签
+ 标签
标签
+
+
+ 标签
+ 标签
+ 标签
+ 标签
+
+
+
+ 标签
+ 标签
+ 标签
+
diff --git a/packages/tag/README.md b/packages/tag/README.md
index 4748249d..69e76a57 100644
--- a/packages/tag/README.md
+++ b/packages/tag/README.md
@@ -32,7 +32,17 @@
```
#### 圆角样式
-通过`mark`设置为圆角样式
+通过`round`设置为圆角样式
+
+```html
+标签
+标签
+标签
+标签
+```
+
+#### 标记样式
+通过`mark`设置为标记样式(半圆角)
```html
标签
@@ -41,13 +51,33 @@
标签
```
+#### 自定义颜色
+
+```html
+标签
+标签
+标签
+标签
+```
+
+#### 标签大小
+
+```html
+标签
+标签
+标签
+```
+
### API
| 参数 | 说明 | 类型 | 默认值 |
|-----------|-----------|-----------|-------------|
-| type | 类型,可选值为`primary` `success` `danger` | `String` | `''`|
+| type | 类型,可选值为`primary` `success` `danger` | `String` | - |
+| size | 大小, 可选值为`large` `medium` | `String` | - |
+| color | 自定义标签颜色 | `String` | - |
| plain | 是否为空心样式 | `Boolean` | `false` |
-| mark | 是否为圆角样式 | `Boolean` | `false` |
+| round | 是否为圆角样式 | `Boolean` | `false` |
+| mark | 是否为标记样式 | `Boolean` | `false` |
### Slot
diff --git a/packages/tag/index.less b/packages/tag/index.less
index 53397be8..c2649c28 100644
--- a/packages/tag/index.less
+++ b/packages/tag/index.less
@@ -1,54 +1,40 @@
@import '../common/style/var.less';
.van-tag {
- display: inline-block;
- padding: 2px 5px;
- line-height: normal;
- border-radius: 3px;
- font-size: 10px;
- background: @gray;
color: @white;
+ font-size: 10px;
+ padding: .2em .5em;
+ line-height: normal;
+ border-radius: .2em;
+ display: inline-block;
&::after {
border-color: currentColor;
- border-radius: 4px;
+ border-radius: .4em;
}
&--mark {
- padding-right: 7px;
- border-radius: 0 8px 8px 0;
+ padding-right: .6em;
+ border-radius: 0 .8em .8em 0;
&::after {
- border-radius: 0 16px 16px 0;
+ border-radius: 0 1.6em 1.6em 0;
}
}
- &--success {
- background: @green;
+ &--round {
+ border-radius: .8em;
- &.van-tag--plain {
- color: @green;
+ &::after {
+ border-radius: 1.6em;
}
}
- &--danger {
- background: @button-danger-background-color;
-
- &.van-tag--plain {
- color: @button-danger-background-color;
- }
+ &--medium {
+ font-size: 12px;
}
- &--primary {
- background: @blue;
-
- &.van-tag--plain {
- color: @blue;
- }
- }
-
- &--plain {
- background: @white;
- color: @gray;
+ &--large {
+ font-size: 14px;
}
}
diff --git a/packages/tag/index.ts b/packages/tag/index.ts
index 05d41648..7d38b59f 100644
--- a/packages/tag/index.ts
+++ b/packages/tag/index.ts
@@ -1,9 +1,38 @@
import { VantComponent } from '../common/component';
+const DEFAULT_COLOR = '#999';
+const COLOR_MAP = {
+ danger: '#f44',
+ primary: '#38f',
+ success: '#06bf04'
+};
+
VantComponent({
props: {
+ size: String,
type: String,
mark: Boolean,
- plain: Boolean
+ color: String,
+ plain: Boolean,
+ round: Boolean
+ },
+
+ computed: {
+ classes() {
+ const { data } = this;
+ return this.classNames('van-tag', 'custom-class', {
+ 'van-tag--mark': data.mark,
+ 'van-tag--plain': data.plain,
+ 'van-tag--round': data.round,
+ [`van-tag--${data.size}`]: data.size,
+ 'van-hairline--surround': data.plain
+ });
+ },
+
+ style() {
+ const color = this.data.color || COLOR_MAP[this.data.type] || DEFAULT_COLOR;
+ const key = this.data.plain ? 'color' : 'background-color';
+ return `${key}: ${color}`;
+ }
}
});
diff --git a/packages/tag/index.wxml b/packages/tag/index.wxml
index e8cef802..5a7a009f 100644
--- a/packages/tag/index.wxml
+++ b/packages/tag/index.wxml
@@ -1,5 +1,3 @@
-
+